|
#define | CPP_assert(...) |
|
#define | CPP_assert_msg static_assert |
|
#define | CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_ |
|
#define | CPP_AUTO_FUN_DECLTYPE_NOEXCEPT_(...) |
|
#define | CPP_AUTO_FUN_IMPL_(...) (__VA_ARGS__) CPP_AUTO_FUN_RETURNS_ |
|
#define | CPP_AUTO_FUN_RETURNS_(...) CPP_AUTO_FUN_SELECT_RETURNS_(__VA_ARGS__,)(__VA_ARGS__) \ |
|
#define | CPP_AUTO_FUN_RETURNS_CONST_0(...) |
|
#define | CPP_AUTO_FUN_RETURNS_CONST_1(...) __VA_ARGS__ CPP_AUTO_FUN_RETURNS_CONST_0 \ |
|
#define | CPP_AUTO_FUN_RETURNS_CONST_2(...) CPP_PP_CAT(CPP_PP_EAT_MUTABLE_, __VA_ARGS__) CPP_AUTO_FUN_RETURNS_CONST_0 |
|
#define | CPP_AUTO_FUN_RETURNS_return |
|
#define | CPP_AUTO_FUN_SELECT_RETURNS_(MAYBE_CONST, ...) |
|
#define | CPP_broken_friend_ret(...) __VA_ARGS__ CPP_PP_EXPAND \ |
|
#define | CPP_ctor(TYPE) TYPE CPP_CTOR_IMPL_1_ |
|
#define | CPP_CTOR_IMPL_1_(...) (__VA_ARGS__) CPP_PP_EXPAND \ |
|
#define | CPP_ctor_sfinae(TYPE) TYPE CPP_CTOR_SFINAE_IMPL_1_ |
|
#define | CPP_CTOR_SFINAE_EAT_NOEXCEPT_noexcept(...) |
|
#define | CPP_CTOR_SFINAE_IMPL_1_(...) |
|
#define | CPP_CTOR_SFINAE_MAKE_PROBE(FIRST, ...) CPP_PP_CAT(CPP_CTOR_SFINAE_PROBE_NOEXCEPT_, FIRST) \ |
|
#define | CPP_CTOR_SFINAE_PROBE_NOEXCEPT_noexcept CPP_PP_PROBE(~) \ |
|
#define | CPP_CTOR_SFINAE_REQUIRES(...) |
|
#define | CPP_CTOR_SFINAE_REQUIRES_0(...) |
|
#define | CPP_CTOR_SFINAE_REQUIRES_1(...) |
|
#define | CPP_CTOR_SFINAE_SHOW_NOEXCEPT_noexcept(...) noexcept(__VA_ARGS__) CPP_PP_EAT CPP_PP_LPAREN \ |
|
#define | CPP_CXX_CONCEPTS 201800L |
|
#define | CPP_CXX_VA_OPT 0 |
|
#define | CPP_def(DECL, ...) |
|
#define | CPP_EXPLICIT explicit |
|
#define | CPP_fun(X) X CPP_FUN_IMPL_1_ |
|
#define | CPP_FUN_IMPL_1_(...) |
|
#define | CPP_member |
|
#define | CPP_member_sfinae CPP_broken_friend_member \ |
|
#define | CPP_PP_AUX_template(...) |
|
#define | CPP_PP_CAT(X, ...) CPP_PP_CAT_(X, __VA_ARGS__) |
|
#define | CPP_PP_CAT2(X, ...) CPP_PP_CAT2_(X, __VA_ARGS__) |
|
#define | CPP_PP_CAT2_(X, ...) X ## __VA_ARGS__ |
|
#define | CPP_PP_CAT_(X, ...) X ## __VA_ARGS__ |
|
#define | CPP_PP_CHECK(...) CPP_PP_CHECK_N(__VA_ARGS__, 0,) |
|
#define | CPP_PP_CHECK_N(x, n, ...) n |
|
#define | CPP_PP_COMMA() , |
|
#define | CPP_PP_COMMA_IIF(X) CPP_PP_IIF(X)(CPP_PP_EMPTY, CPP_PP_COMMA)() \ |
|
#define | CPP_PP_COUNT(...) |
|
#define | CPP_PP_COUNT_( _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, N, ...) N \ |
|
#define | CPP_PP_DECL_DEF(TPARAM, NAME, ...) |
|
#define | CPP_PP_DECL_DEF_0(TPARAM, NAME, ...) |
|
#define | CPP_PP_DECL_DEF_1(TPARAM, NAME, ...) |
|
#define | CPP_PP_DECL_DEF_IMPL(TPARAM, NAME, ARGS, ...) |
|
#define | CPP_PP_DECL_DEF_NAME(...) CPP_PP_CAT(CPP_PP_DEF_, __VA_ARGS__), \ |
|
#define | CPP_PP_DEF_bool |
|
#define | CPP_PP_DEF_class |
|
#define | CPP_PP_DEF_concept |
|
#define | CPP_PP_DEF_DECL_template(...) template(__VA_ARGS__), \ |
|
#define | CPP_PP_DEF_IMPL(REQUIRES, ...) |
|
#define | CPP_PP_DEF_IMPL_0(...) __VA_ARGS__ \ |
|
#define | CPP_PP_DEF_IMPL_1(...) CPP_PP_CAT(CPP_PP_DEF_IMPL_1_, __VA_ARGS__) \ |
|
#define | CPP_PP_DEF_IMPL_1_requires requires CPP_PP_DEF_IMPL_1_REQUIRES \ |
|
#define | CPP_PP_DEF_IMPL_1_REQUIRES(...) (__VA_ARGS__) CPP_PP_DEF_IMPL_1_REQUIRES_BODY \ |
|
#define | CPP_PP_DEF_IMPL_1_REQUIRES_BODY(...) { __VA_ARGS__; } \ |
|
#define | CPP_PP_DEF_IMPL_IS_PAREN_0(REQUIRES) |
|
#define | CPP_PP_DEF_IMPL_IS_PAREN_1(REQUIRES) CPP_PP_DEF_IMPL_0 \ |
|
#define | CPP_PP_DEF_int |
|
#define | CPP_PP_DEF_size_t |
|
#define | CPP_PP_DEF_template(...) template<__VA_ARGS__> \ |
|
#define | CPP_PP_DEF_typename |
|
#define | CPP_PP_DEF_unsigned |
|
#define | CPP_PP_EAT(...) |
|
#define | CPP_PP_EAT_MUTABLE_mutable |
|
#define | CPP_PP_EMPTY() |
|
#define | CPP_PP_EVAL(X, ...) X(__VA_ARGS__) |
|
#define | CPP_PP_EVAL2(X, ...) X(__VA_ARGS__) |
|
#define | CPP_PP_EXPAND(...) __VA_ARGS__ |
|
#define | CPP_PP_IGNORE_CXX2A_COMPAT_BEGIN |
|
#define | CPP_PP_IGNORE_CXX2A_COMPAT_END |
|
#define | CPP_PP_IIF(BIT) CPP_PP_CAT_(CPP_PP_IIF_, BIT) |
|
#define | CPP_PP_IIF_0(TRUE, ...) __VA_ARGS__ |
|
#define | CPP_PP_IIF_1(TRUE, ...) TRUE |
|
#define | CPP_PP_IS_NOT_EMPTY(...) |
|
#define | CPP_PP_IS_PAREN(x) CPP_PP_CHECK(CPP_PP_IS_PAREN_PROBE x) |
|
#define | CPP_PP_IS_PAREN_PROBE(...) CPP_PP_PROBE(~) |
|
#define | CPP_PP_LBRACE() { |
|
#define | CPP_PP_LPAREN ( |
|
#define | CPP_PP_NOT(BIT) CPP_PP_CAT_(CPP_PP_NOT_, BIT) |
|
#define | CPP_PP_NOT_0 1 |
|
#define | CPP_PP_NOT_1 0 |
|
#define | CPP_PP_PROBE(x) x, 1, |
|
#define | CPP_PP_PROBE_CONST_MUTABLE_PROBE_const CPP_PP_PROBE_N(~, 1) |
|
#define | CPP_PP_PROBE_CONST_MUTABLE_PROBE_mutable CPP_PP_PROBE_N(~, 2) |
|
#define | CPP_PP_PROBE_EMPTY() |
|
#define | CPP_PP_PROBE_EMPTY_PROBE_CPP_PP_PROBE_EMPTY CPP_PP_PROBE(~) \ |
|
#define | CPP_PP_PROBE_N(x, n) x, n, |
|
#define | CPP_PP_RBRACE() } |
|
#define | CPP_PP_REQUIRES_PROBE_requires CPP_PP_PROBE(~) \ |
|
#define | CPP_PP_TPARAM_1(_1) CPP_PP_CAT2(CPP_PP_DEF_, _1) |
|
#define | CPP_PP_TPARAM_2(_1, ...) CPP_PP_CAT2(CPP_PP_DEF_, _1), CPP_PP_TPARAM_1(__VA_ARGS__) |
|
#define | CPP_PP_TPARAM_3(_1, ...) CPP_PP_CAT2(CPP_PP_DEF_, _1), CPP_PP_TPARAM_2(__VA_ARGS__) |
|
#define | CPP_PP_TPARAM_4(_1, ...) CPP_PP_CAT2(CPP_PP_DEF_, _1), CPP_PP_TPARAM_3(__VA_ARGS__) |
|
#define | CPP_PP_TPARAM_5(_1, ...) CPP_PP_CAT2(CPP_PP_DEF_, _1), CPP_PP_TPARAM_4(__VA_ARGS__) |
|
#define | CPP_ret(...) __VA_ARGS__ CPP_PP_EXPAND \ |
|
#define | CPP_template(...) template<__VA_ARGS__> CPP_PP_EXPAND \ |
|
#define | CPP_template_def CPP_template \ |
|
#define | CPP_template_def_sfinae(...) template<__VA_ARGS__ CPP_TEMPLATE_DEF_SFINAE_AUX_ \ |
|
#define | CPP_TEMPLATE_DEF_SFINAE_AUX_(...) |
|
#define | CPP_template_sfinae(...) template<__VA_ARGS__ CPP_TEMPLATE_SFINAE_AUX_ \ |
|
#define | CPP_TEMPLATE_SFINAE_AUX_(...) |
|
#define | CPP_TEMPLATE_SFINAE_AUX_3_requires |
|
|
template<bool... Bs> |
constexpr bool | concepts::and_v |
|
concept | concepts::defs::assignable_from = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (T t, U &&u) ( t = (U &&) u, requires_<same_as<T, decltype(t = (U &&) u)>> ) && std::is_lvalue_reference<T>::value )( requires (T t, U &&u) ( t = (U &&) u, requires_<same_as<T, decltype(t = (U &&) u)>> ) && std::is_lvalue_reference<T>::value ) |
|
concept | concepts::defs::common_reference_with = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( same_as<common_reference_t<T )( same_as<common_reference_t<T, U>, common_reference_t<U, T>> && convertible_to<T, common_reference_t<T, U>> && convertible_to<U, common_reference_t<T, U>> ) |
|
concept | concepts::defs::common_with = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( same_as<common_type_t<T )( same_as<common_type_t<T, U>, common_type_t<U, T>> && convertible_to<T, common_type_t<T, U>> && convertible_to<U, common_type_t<T, U>> && common_reference_with< typename std::add_lvalue_reference<T const>::type, typename std::add_lvalue_reference<U const>::type> && common_reference_with< typename std::add_lvalue_reference<common_type_t<T, U>>::type, common_reference_t< typename std::add_lvalue_reference<T const>::type, typename std::add_lvalue_reference<U const>::type>> ) |
|
concept | concepts::defs::constructible_from = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( destructible<T> && std::is_constructible< T )( destructible<T> && std::is_constructible< T, Args... >::value ) |
|
concept | concepts::defs::convertible_to = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( implicitly_convertible_to<From )( implicitly_convertible_to<From, To> && explicitly_convertible_to<From, To> ) |
|
concept | concepts::defs::copy_constructible = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( move_constructible<T> && constructible_from<T )( move_constructible<T> && constructible_from<T, T &> && constructible_from<T, T const &> && constructible_from<T, T const> && convertible_to<T &, T> && convertible_to<T const &, T> && convertible_to<T const, T> ) |
|
concept | concepts::defs::copyable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( copy_constructible<T> && movable<T> && assignable_from<T & )( copy_constructible<T> && movable<T> && assignable_from<T &, T const &> ) |
|
concept | concepts::defs::default_constructible = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( constructible_from<T> )( constructible_from<T> ) |
|
concept | concepts::defs::derived_from = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( std::is_base_of< U )( std::is_base_of< U, T >::value && convertible_to<T const volatile *, U const volatile *> ) |
|
concept | concepts::defs::destructible = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( std::is_nothrow_destructible<T>::value )( std::is_nothrow_destructible<T>::value ) |
|
concept | concepts::defs::equality_comparable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( detail::weakly_equality_comparable_with_<T )( detail::weakly_equality_comparable_with_<T, T> ) |
|
concept | concepts::defs::equality_comparable_with = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( equality_comparable<T> && equality_comparable<U> && detail::weakly_equality_comparable_with_<T )( equality_comparable<T> && equality_comparable<U> && detail::weakly_equality_comparable_with_<T, U> && common_reference_with<detail::as_cref_t<T>, detail::as_cref_t<U>> && equality_comparable< common_reference_t<detail::as_cref_t<T>, detail::as_cref_t<U>>> ) |
|
concept | concepts::defs::integral = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( std::is_integral<T>::value )( std::is_integral<T>::value ) |
|
concept | concepts::defs::is_true = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( B )( B ) |
|
concept | concepts::defs::movable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( std::is_object<T>::value && move_constructible<T> && assignable_from<T & )( std::is_object<T>::value && move_constructible<T> && assignable_from<T &, T> && swappable<T> ) |
|
concept | concepts::defs::move_constructible = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( constructible_from<T )( constructible_from<T, T> && convertible_to<T, T> ) |
|
template<bool... Bs> |
constexpr bool | concepts::or_v |
|
concept | concepts::defs::regular = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( semiregular<T> && equality_comparable<T> )( semiregular<T> && equality_comparable<T> ) |
|
template<bool B> |
constexpr ::concepts::detail::enable_if_t< int, B > | concepts::requires_ = 0 |
|
concept | concepts::defs::same_as = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( std::is_same< A )( std::is_same< A, B >::value && std::is_same< B, A >::value ) |
|
concept | concepts::defs::satisfies = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( static_cast<bool>(Trait<T, Args...>::type::value) )( static_cast<bool>(Trait<T, Args...>::type::value) ) |
|
concept | concepts::defs::semiregular = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( copyable<T> && default_constructible<T> )( copyable<T> && default_constructible<T> ) |
|
concept | concepts::defs::signed_integral = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( integral<T> && std::is_signed<T>::value )( integral<T> && std::is_signed<T>::value ) |
|
concept | concepts::defs::swappable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (T &t, T &u) ( concepts::swap(t, u) ) )( requires (T &t, T &u) ( concepts::swap(t, u) ) ) |
|
concept | concepts::defs::swappable_with = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (T &&t, U &&u) ( concepts::swap((T &&) t, (T &&) t), concepts::swap((U &&) u, (U &&) u), concepts::swap((U &&) u, (T &&) t), concepts::swap((T &&) t, (U &&) u) ) && common_reference_with<detail::as_cref_t<T> )( requires (T &&t, U &&u) ( concepts::swap((T &&) t, (T &&) t), concepts::swap((U &&) u, (U &&) u), concepts::swap((U &&) u, (T &&) t), concepts::swap((T &&) t, (U &&) u) ) && common_reference_with<detail::as_cref_t<T>, detail::as_cref_t<U>> ) |
|
concept | concepts::defs::totally_ordered = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (detail::as_cref_t<T> t, detail::as_cref_t<T> u) ( t < u ? 1 : 0, t > u ? 1 : 0, u <= t ? 1 : 0, u >= t ? 1 : 0 ) && equality_comparable<T> )( requires (detail::as_cref_t<T> t, detail::as_cref_t<T> u) ( t < u ? 1 : 0, t > u ? 1 : 0, u <= t ? 1 : 0, u >= t ? 1 : 0 ) && equality_comparable<T> ) |
|
concept | concepts::defs::totally_ordered_with = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (detail::as_cref_t<T> t, detail::as_cref_t<U> u) ( t < u ? 1 : 0, t > u ? 1 : 0, t <= u ? 1 : 0, t >= u ? 1 : 0, u < t ? 1 : 0, u > t ? 1 : 0, u <= t ? 1 : 0, u >= t ? 1 : 0 ) && totally_ordered<T> && totally_ordered<U> && equality_comparable_with<T )( requires (detail::as_cref_t<T> t, detail::as_cref_t<U> u) ( t < u ? 1 : 0, t > u ? 1 : 0, t <= u ? 1 : 0, t >= u ? 1 : 0, u < t ? 1 : 0, u > t ? 1 : 0, u <= t ? 1 : 0, u >= t ? 1 : 0 ) && totally_ordered<T> && totally_ordered<U> && equality_comparable_with<T, U> && common_reference_with<detail::as_cref_t<T>, detail::as_cref_t<U>> && totally_ordered< common_reference_t<detail::as_cref_t<T>, detail::as_cref_t<U>>> ) |
|
concept | concepts::defs::type = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( true )( true ) |
|
concept | concepts::defs::unsigned_integral = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( integral<T> && !signed_integral<T> )( integral<T> && !signed_integral<T> ) |
|
concept | concepts::detail::weakly_equality_comparable_with_ = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (detail::as_cref_t<T> t, detail::as_cref_t<U> u) ( (t == u) ? 1 : 0, (t != u) ? 1 : 0, (u == t) ? 1 : 0, (u != t) ? 1 : 0 ) )( requires (detail::as_cref_t<T> t, detail::as_cref_t<U> u) ( (t == u) ? 1 : 0, (t != u) ? 1 : 0, (u == t) ? 1 : 0, (u != t) ? 1 : 0 ) ) |
|