SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
template_inspection.hpp File Reference

Provides type traits for working with templates. More...

+ Include dependency graph for template_inspection.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  seqan3::detail::is_type_specialisation_of< source_t, target_template >
 Determines whether a source_type is a specialisation of another template. More...
 
struct  seqan3::detail::is_type_specialisation_of< source_t, target_template >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
struct  seqan3::detail::is_value_specialisation_of< source_t, target_template >
 Determines whether a source_type is a specialisation of another template. More...
 
struct  seqan3::detail::transfer_template_args_onto< source_template< source_arg_types... >, target_template >
 Extracts a type template's type arguments and specialises another template with them. More...
 
struct  seqan3::detail::transfer_template_vargs_onto< source_template< source_varg_types... >, target_template >
 Extracts a type template's non-type arguments and specialises another template with them. More...
 
struct  seqan3::detail::valid_template_spec_or< fallback_t, templ_t, spec_t >
 Exposes templ_t<spec_t...> if that is valid, otherwise fallback_t. More...
 
struct  seqan3::detail::valid_template_spec_or< fallback_t, templ_t, spec_t... >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 

Namespaces

namespace  seqan3
 The main SeqAn3 namespace.
 
namespace  seqan3::detail
 The internal SeqAn3 namespace.
 

Typedefs

template<typename t >
using seqan3::detail::strip_type_identity_t = std::conditional_t< is_type_specialisation_of_v< t, std::type_identity >, transformation_trait_or_t< t, void >, t >
 A transformation trait shortcut that returns the type inside a std::type_identity or the type itself.
 
template<typename source_type , template< typename... > typename target_template>
using seqan3::detail::transfer_template_args_onto_t = typename transfer_template_args_onto< source_type, target_template >::type
 Shortcut for seqan3::detail::transfer_template_args_onto (transformation_trait shortcut).
 
template<typename source_type , template< auto... > typename target_template>
using seqan3::detail::transfer_template_vargs_onto_t = typename transfer_template_vargs_onto< source_type, target_template >::type
 Shortcut for seqan3::detail::transfer_template_vargs_onto (transformation_trait shortcut).
 
template<typename fallback_t , template< typename... > typename templ_t, typename... spec_t>
using seqan3::detail::valid_template_spec_or_t = typename valid_template_spec_or< fallback_t, templ_t, spec_t... >::type
 Helper for seqan3::detail::valid_template_spec_or (transformation_trait shortcut).
 

Variables

template<typename source_t , template< auto... > typename target_template>
constexpr bool is_value_specialisation_of_v = is_value_specialisation_of<source_t, target_template>::value
 Helper variable template for seqan3::detail::is_value_specialisation_of (unary_type_trait shortcut).
 

Detailed Description

Provides type traits for working with templates.

Author
Hannes Hauswedell <hannes.hauswedell AT fu-berlin.de>
Lydia Buntrock <lydia.buntrock AT fu-berlin.de>

Variable Documentation

◆ is_value_specialisation_of_v

template<typename source_t , template< auto... > typename target_template>
constexpr bool is_value_specialisation_of_v = is_value_specialisation_of<source_t, target_template>::value
inlineconstexpr

Helper variable template for seqan3::detail::is_value_specialisation_of (unary_type_trait shortcut).

Template Parameters
source_typeThe source type.
target_templateThe type template you wish to compare against (must take only types as template arguments).
Hide me