14namespace seqan3::detail
38template <
template <
typename...>
typename crtp_base,
typename... args_t>
39struct deferred_crtp_base
44 template <
typename derived_t>
45 using invoke = crtp_base<derived_t, args_t...>;
71template <
template <
typename,
auto...>
typename crtp_base,
auto... args>
72struct deferred_crtp_base_vargs
77 template <
typename derived_t>
78 using invoke = crtp_base<derived_t, args...>;
92template <
typename deferred_crtp_base_t,
typename derived_t>
93 requires requires {
typename deferred_crtp_base_t::template invoke<derived_t>; }
94using invoke_deferred_crtp_base =
typename deferred_crtp_base_t::template invoke<derived_t>;