19#if defined( __clang__ ) && ( __clang_major__ < 15 )
35concept destructible = std::is_nothrow_destructible_v<T>;
44template<
class T,
class... Args>
45concept constructible_from
46 = std::destructible<T> && std::is_constructible_v<T, Args...>;
57template<
class From,
class To>
58concept convertible_to = std::is_convertible_v<From, To> &&
requires {
59 static_cast<To
>( std::declval<From>() );
72template<
class Derived,
class Base>
74 = std::is_base_of_v<Base, Derived>
75 && std::is_convertible_v<const volatile Derived *, const volatile Base *>;