19 namespace seqan3::detail
31 template <
template <
typename ...>
typename template_t,
typename ...spec_t>
54 template <
template <
typename ...>
typename template_t,
typename ...spec_t>
55 struct instantiate<lazy<template_t, spec_t...>>
58 using type = template_t<spec_t...>;
67 requires requires {
typename instantiate<t>::type; }
69 using instantiate_t =
typename instantiate<t>::type;
81 template <
typename t,
bool condition>
102 template <
template <
typename ...>
typename template_t,
typename ...spec_t>
103 struct instantiate_if<lazy<template_t, spec_t...>, true>
106 using type = template_t<spec_t...>;
113 template <
typename t,
bool condition>
115 requires requires {
typename instantiate_if<t, condition>::type; }
117 using instantiate_if_t =
typename instantiate_if<t, condition>::type;
123 template <
typename t,
bool condition>
125 requires requires { instantiate_if_t<t, condition>::value; }
127 inline constexpr
auto instantiate_if_v = instantiate_if_t<t, condition>::value;
146 template <
bool decision,
typename on_true_t,
typename on_false_t>
147 struct lazy_conditional : instantiate<std::conditional_t<decision, on_true_t, on_false_t>>
156 template <
bool decision,
typename on_true_t,
typename on_false_t>
158 requires requires {
typename instantiate_t<std::conditional_t<decision, on_true_t, on_false_t>>; }
160 using lazy_conditional_t = instantiate_t<std::conditional_t<decision, on_true_t, on_false_t>>;
The identity transformation (a transformation_trait that returns the input).
Definition: type_traits:87
The <type_traits> header from C++20's standard library.