|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>> |
constexpr auto | enum_cast (string_view value, [[maybe_unused]] BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, optional< std::decay_t< E >>, BinaryPredicate > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_cast (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_contains (E value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>> |
constexpr auto | enum_contains (string_view value, BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, bool, BinaryPredicate > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_contains (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_count () noexcept -> detail::enable_if_t< E, std::size_t > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_entries () noexcept -> detail::enable_if_t< E, detail::entries_t< E, S >> |
|
template<typename E , typename BinaryPredicate = std::equal_to<>> |
constexpr auto | enum_flags_cast (string_view value, [[maybe_unused]] BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, optional< std::decay_t< E >>, BinaryPredicate > |
|
template<typename E > |
constexpr auto | enum_flags_cast (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>> |
|
template<typename E > |
constexpr auto | enum_flags_contains (E value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , typename BinaryPredicate = std::equal_to<>> |
constexpr auto | enum_flags_contains (string_view value, BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, bool, BinaryPredicate > |
|
template<typename E > |
constexpr auto | enum_flags_contains (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E > |
auto | enum_flags_name (E value, char_type sep=static_cast< char_type >('|')) -> detail::enable_if_t< E, string > |
|
template<typename E > |
constexpr auto | enum_flags_test (E flags, E flag) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E > |
constexpr auto | enum_flags_test_any (E lhs, E rhs) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , detail::enable_if_t< E, int > = 0> |
constexpr auto | enum_for_each (F &&f) |
|
template<typename... Es> |
constexpr auto | enum_fuse (Es... values) noexcept |
|
template<auto V, detail::enum_subtype S = detail::subtype_v<std::decay_t<decltype(V)>>> |
constexpr auto | enum_index () noexcept -> detail::enable_if_t< decltype(V), std::size_t > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_index (E value) noexcept -> detail::enable_if_t< E, optional< std::size_t >> |
|
template<typename E > |
constexpr auto | enum_integer (E value) noexcept -> detail::enable_if_t< E, underlying_type_t< E >> |
|
template<auto V> |
constexpr auto | enum_name () noexcept -> detail::enable_if_t< decltype(V), string_view > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_name (E value) noexcept -> detail::enable_if_t< E, string_view > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_names () noexcept -> detail::enable_if_t< E, detail::names_t< E, S >> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_next_value (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_next_value_circular (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, std::decay_t< E >> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_prev_value (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_prev_value_circular (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, std::decay_t< E >> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_reflected (E value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_reflected (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename Result = detail::default_result_type, typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , typename R = detail::result_t<E, S, Result, F>> |
constexpr decltype(auto) | enum_switch (F &&f, E value) |
|
template<typename Result , typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , typename R = detail::result_t<E, S, Result, F>> |
constexpr decltype(auto) | enum_switch (F &&f, E value, Result &&result) |
|
template<typename E > |
constexpr auto | enum_type_name () noexcept -> detail::enable_if_t< E, string_view > |
|
template<typename E > |
constexpr auto | enum_underlying (E value) noexcept -> detail::enable_if_t< E, underlying_type_t< E >> |
|
template<typename E , std::size_t I, detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_value () noexcept -> detail::enable_if_t< E, std::decay_t< E >> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_value (std::size_t index) noexcept -> detail::enable_if_t< E, std::decay_t< E >> |
|
template<typename E , detail::enum_subtype S = detail::subtype_v<E>> |
constexpr auto | enum_values () noexcept -> detail::enable_if_t< E, detail::values_t< E, S >> |
|