16 #include <type_traits> 18 #include <meta/meta.hpp> 36 template <
typename algorithm_
id_type>
54 template <ConfigElement query_t, ConfigElement ... compare_types>
55 struct is_configuration_valid :
57 (std::is_same_v<remove_cvref_t<decltype(query_t::id)>, remove_cvref_t<decltype(compare_types::id)>> && ...) &&
58 (compatibility_table<remove_cvref_t<decltype(query_t::id)>>
59 [static_cast<std::underlying_type_t<remove_cvref_t<decltype(query_t::id)>>>(query_t::id)]
60 [static_cast<std::underlying_type_t<remove_cvref_t<decltype(query_t::id)>>>(compare_types::id)] && ...),
70 template <
typename query_t,
typename ... compare_types>
71 inline constexpr
bool is_configuration_valid_v = is_configuration_valid<query_t, compare_types...>::value;
84 template <
template <
typename ...>
typename query_t>
85 struct is_same_configuration_f
91 template <
typename compare_type>
92 using invoke = is_type_specialisation_of<compare_type, query_t>;
Provides concepts for the configuration classes.
Provides seqan3::type_list and auxiliary type traits.
Provides seqan3::TupleLike.
Definition: aligned_sequence_concept.hpp:35