17namespace seqan3::detail
25template <
typename source_type,
template <
typename...>
typename target_template>
26struct transfer_template_args_onto
54template <
template <
typename...>
typename source_template,
55 template <
typename...>
56 typename target_template,
57 typename... source_arg_types>
58 requires requires () {
typename target_template<source_arg_types...>; }
59struct transfer_template_args_onto<source_template<source_arg_types...>, target_template>
62 using type = target_template<source_arg_types...>;
69template <
typename source_type,
template <
typename...>
typename target_template>
70using transfer_template_args_onto_t =
typename transfer_template_args_onto<source_type, target_template>::type;
77template <
typename source_type,
template <
auto...>
typename target_template>
78struct transfer_template_vargs_onto
99template <
template <
auto...>
typename source_template,
101 typename target_template,
102 auto... source_varg_types>
103 requires requires () {
typename target_template<source_varg_types...>; }
104struct transfer_template_vargs_onto<source_template<source_varg_types...>, target_template>
107 using type = target_template<source_varg_types...>;
114template <
typename source_type,
template <
auto...>
typename target_template>
115using transfer_template_vargs_onto_t =
typename transfer_template_vargs_onto<source_type, target_template>::type;
133template <
typename source_t,
template <
typename...>
typename target_template>
138template <
template <
typename...>
typename source_t,
typename... source_args>
139struct is_type_specialisation_of<source_t<source_args...>, source_t> :
public std::true_type
147template <
typename source_t,
template <
typename...>
typename target_template>
148inline constexpr bool is_type_specialisation_of_v = is_type_specialisation_of<source_t, target_template>::value;
155template <
typename source_t,
template <
auto...>
typename target_template>
169template <
template <
auto...>
typename source_t,
auto... source_args>
170struct is_value_specialisation_of<source_t<source_args...>, source_t> :
public std::true_type
178template <
typename source_t,
template <
auto...>
typename target_template>
189template <
typename fallback_t,
template <
typename...>
typename templ_t,
typename... spec_t>
190struct valid_template_spec_or
193 using type = fallback_t;
197template <
typename fallback_t,
template <
typename...>
typename templ_t,
typename... spec_t>
198 requires requires {
typename templ_t<spec_t...>; }
199struct valid_template_spec_or<fallback_t, templ_t, spec_t...>
202 using type = templ_t<spec_t...>;
212template <
typename fallback_t,
template <
typename...>
typename templ_t,
typename... spec_t>
213using valid_template_spec_or_t =
typename valid_template_spec_or<fallback_t, templ_t, spec_t...>::type;
234template <
typename mytype,
template <
typename...>
typename type_template>
235concept template_specialisation_of = is_type_specialisation_of_v<mytype, type_template>;
248using strip_type_identity_t =
constexpr bool is_value_specialisation_of_v
Helper variable template for seqan3::detail::is_value_specialisation_of (unary_type_trait shortcut).
Definition template_inspection.hpp:179