SeqAn3
Metafunction

Provide various metafunctions. More...

Collaboration diagram for Metafunction:

Classes

interface  seqan3::compatible_concept
 Two types are "compatible" if their seqan3::dimension_v and their seqan3::innermost_value_type_t are the same. More...
 
struct  seqan3::const_reference< t >
 Type metafunction that returns the const_reference of another type [metafunction declaration]. More...
 
struct  seqan3::const_reference< rng_t >
 Type metafunction that returns the const_reference of another type [specialisation for input ranges]. More...
 
struct  seqan3::difference_type< t >
 Type metafunction that returns the difference_type of another type [metafunction declaration]. More...
 
struct  seqan3::difference_type< it_t >
 Type metafunction that returns the difference_type of another type [specialisation for iterators]. More...
 
struct  seqan3::difference_type< rng_t >
 Type metafunction that returns the difference_type of another type [specialisation for ranges]. More...
 
struct  seqan3::innermost_value_type< t >
 Recursively determines the value_type on containers and/or iterators [Type metafunction]. More...
 
struct  seqan3::reference< t >
 Type metafunction that returns the reference of another type [metafunction declaration]. More...
 
struct  seqan3::reference< it_t >
 Type metafunction that returns the reference of another type [specialisation for input iterators]. More...
 
struct  seqan3::reference< rng_t >
 Type metafunction that returns the reference of another type [specialisation for input ranges]. More...
 
struct  seqan3::rvalue_reference< t >
 Type metafunction that returns the rvalue_reference of another type [metafunction declaration]. More...
 
struct  seqan3::rvalue_reference< it_t >
 Type metafunction that returns the rvalue_reference of another type [specialisation for input iterators]. More...
 
struct  seqan3::rvalue_reference< rng_t >
 Type metafunction that returns the rvalue_reference of another type [specialisation for input ranges]. More...
 
struct  seqan3::size_type< t >
 Type metafunction that returns the size_type of another type [metafunction declaration]. More...
 
struct  seqan3::size_type< it_t >
 Type metafunction that returns the size_type of another type [specialisation for iterators]. More...
 
struct  seqan3::size_type< rng_t >
 Type metafunction that returns the size_type of another type [specialisation for sized ranges]. More...
 
struct  seqan3::value_type< t >
 Type metafunction that returns the value_type of another type [metafunction declaration]. More...
 
struct  seqan3::value_type< it_t >
 Type metafunction that returns the value_type of another type [specialisation for input iterators]. More...
 
struct  seqan3::value_type< rng_t >
 Type metafunction that returns the value_type of another type [specialisation for input ranges]. More...
 

Macros

#define SEQAN3_IS_CONSTEXPR(...)   noexcept(seqan3::detail::is_constexpr_helper( (__VA_ARGS__, 0) ))
 Returns true if the expression passed to this macro can be evaluated at compile time, false otherwise. More...
 

Typedefs

template<typename t >
using seqan3::const_reference_t = typename const_reference< t >::type
 Type metafunction shortcut for seqan3::const_reference. More...
 
template<typename t >
using seqan3::difference_type_t = typename difference_type< t >::type
 Type metafunction shortcut for seqan3::difference_type. More...
 
template<typename t >
using seqan3::innermost_value_type_t = typename innermost_value_type< t >::type
 Shortcut for seqan3::innermost_value_type.
 
template<typename t >
using seqan3::reference_t = typename reference< t >::type
 Type metafunction shortcut for seqan3::reference. More...
 
template<typename t >
using seqan3::remove_cvref_t = std::remove_cv_t< std::remove_reference_t< t > >
 Return the input type with const, volatile and references removed [Type metafunction]. More...
 
template<typename t >
using seqan3::rvalue_reference_t = typename rvalue_reference< t >::type
 Type metafunction shortcut for seqan3::rvalue_reference. More...
 
template<typename t >
using seqan3::size_type_t = typename size_type< t >::type
 Type metafunction shortcut for seqan3::size_type. More...
 
template<typename type_t , typename default_t >
using transformation_trait_or_t = typename transformation_trait_or< type_t, default_t >::type
 Helper type of seqan3::detail::transformation_trait_or.
 
template<typename t >
using seqan3::value_type_t = typename value_type< t >::type
 Type metafunction shortcut for seqan3::value_type. More...
 

Variables

template<typename t >
constexpr size_t seqan3::dimension_v = 1
 Returns the number of times you can call seqan3::value_type_t recursively on t [Value metafunction]. More...
 

Detailed Description

Provide various metafunctions.

Macro Definition Documentation

◆ SEQAN3_IS_CONSTEXPR

#define SEQAN3_IS_CONSTEXPR (   ...)    noexcept(seqan3::detail::is_constexpr_helper( (__VA_ARGS__, 0) ))

Returns true if the expression passed to this macro can be evaluated at compile time, false otherwise.

Returns
true or false.

Typedef Documentation

◆ const_reference_t

template<typename t >
using seqan3::const_reference_t = typedef typename const_reference<t>::type

Type metafunction shortcut for seqan3::const_reference.

Template Parameters
tThe type you wish to query.

◆ difference_type_t

template<typename t >
using seqan3::difference_type_t = typedef typename difference_type<t>::type

Type metafunction shortcut for seqan3::difference_type.

Template Parameters
tThe type you wish to query.

◆ reference_t

template<typename t >
using seqan3::reference_t = typedef typename reference<t>::type

Type metafunction shortcut for seqan3::reference.

Template Parameters
tThe type you wish to query.

◆ remove_cvref_t

template<typename t >
using seqan3::remove_cvref_t = typedef std::remove_cv_t<std::remove_reference_t<t> >

Return the input type with const, volatile and references removed [Type metafunction].

Template Parameters
tThe type to operate on.

◆ rvalue_reference_t

template<typename t >
using seqan3::rvalue_reference_t = typedef typename rvalue_reference<t>::type

Type metafunction shortcut for seqan3::rvalue_reference.

Template Parameters
tThe type you wish to query.

◆ size_type_t

template<typename t >
using seqan3::size_type_t = typedef typename size_type<t>::type

Type metafunction shortcut for seqan3::size_type.

Template Parameters
tThe type you wish to query.

◆ value_type_t

template<typename t >
using seqan3::value_type_t = typedef typename value_type<t>::type

Type metafunction shortcut for seqan3::value_type.

Template Parameters
tThe type you wish to query.

Variable Documentation

◆ dimension_v

template<typename t >
constexpr size_t seqan3::dimension_v = 1

Returns the number of times you can call seqan3::value_type_t recursively on t [Value metafunction].

Template Parameters
tThe type to be queried; must resolve seqan3::value_type_t at least once.

Attention, this metafunction implicitly removes cv-qualifiers and reference from the types it recurses on and returns.