std::is_scoped_enum
cppreference.com
<tbody>
</tbody>
template< class T > struct is_scoped_enum; |
( C++23) | |
std::is_scoped_enum UnaryTypeTrait.
, T . - value, true, T . value false.
, std::is_scoped_enum std::is_scoped_enum_v .
| T |
<tbody> </tbody>
template< class T > inline constexpr bool is_scoped_enum_v = is_scoped_enum<T>::value; |
( C++23) | |
std::integral_constant
value [static] |
true, T , false (public static -) |
-
operator bool |
bool, value (public -) |
operator() (C++14) |
value (public -) |
value_type
|
bool
|
type
|
std::integral_constant<bool, value>
|
__cpp_lib_is_scoped_enum |
202011L |
(C++23) | std::is_scoped_enum
|
template<typename E>
struct is_scoped_enum : std::bool_constant<requires
{
requires std::is_enum_v<E>;
requires !std::is_convertible_v<E, std::underlying_type_t<E>>;
}>
{};
|
#include <type_traits>
class A {};
enum E {};
enum struct Es { oz };
enum class Ec : int {};
int main()
{
static_assert(std::is_scoped_enum_v<A> == false);
static_assert(std::is_scoped_enum_v<E> == false);
static_assert(std::is_scoped_enum_v<Es> == true);
static_assert(std::is_scoped_enum_v<Ec> == true);
static_assert(std::is_scoped_enum_v<int> == false);
}
(C++11) |
, ( ) |
(C++11) |
, ( ) |
(C++11) |
, ( ) |
(C++11) |
, ( ) |