19namespace seqan3::detail
31template <
template <
typename ...>
typename template_t,
typename ...spec_t>
54template <
template <
typename ...>
typename template_t,
typename ...spec_t>
55struct instantiate<lazy<template_t, spec_t...>>
58 using type = template_t<spec_t...>;
67 requires requires {
typename instantiate<t>::type; }
69using instantiate_t =
typename instantiate<t>::type;
81template <
typename t,
bool condition>
102template <
template <
typename ...>
typename template_t,
typename ...spec_t>
103struct instantiate_if<lazy<template_t, spec_t...>, true>
106 using type = template_t<spec_t...>;
113template <
typename t,
bool condition>
115 requires requires {
typename instantiate_if<t, condition>::type; }
117using instantiate_if_t =
typename instantiate_if<t, condition>::type;
123template <
typename t,
bool condition>
125 requires requires { instantiate_if_t<t, condition>::value; }
127inline constexpr auto instantiate_if_v = instantiate_if_t<t, condition>::value;
146template <
bool decision,
typename on_true_t,
typename on_false_t>
147struct lazy_conditional : instantiate<std::conditional_t<decision, on_true_t, on_false_t>>
156template <
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>>; }
160using lazy_conditional_t = instantiate_t<std::conditional_t<decision, on_true_t, on_false_t>>;
The <type_traits> header from C++20's standard library.