Concepts
Some extra concepts.
Caution
Imports <concepts> and <type_traits> via #include "atl/utils/type_traits.hpp".
Tip
To import use #include "atl/concepts/concepts.hpp".
abl::all_same and abl::all_unique
abl::all_sameandabl::all_uniqueare concept constraints that check if all types in a type pack are the same or unique, respectively.
#include "atl/utils/type_traits.hpp"
template <typename... Ts>
concept all_same = are_same<Ts...>::value;
template <typename... Ts>
concept all_unique = are_unique<Ts...>::value;abl::contains
abl::containsis a concept constraint that checks if a type is contained in a type pack.
#include "atl/utils/type_traits.hpp"
template <typename T, typename... Ts>
concept contains = (std::is_same_v<T, Ts> || ...);