11 #include <initializer_list>
12 #include <type_traits>
17 template <
class TDerived,
class TBase>
20 template <
class TBase,
class TDerived>
21 concept
IsBaseOf = std::is_base_of_v<TBase, TDerived>;
23 template <
class TT,
class TU>
24 concept
SameAs = std::is_same_v<TT, TU>;
32 template <
class TFrom,
class TTo>
34 static_cast<TTo
>(std::declval<TFrom>());
37 template <
class TT,
class... TArgs>
39 std::is_nothrow_destructible_v<TT> && std::is_constructible_v<TT, TArgs...>;
42 concept
Range = requires(T& t) {