在线文档教程
C++
应用 | Utilities

std::underlying_type

STD::基础[医]类型

Defined in header
template< class T > struct underlying_type;(since C++11)

如果T是一个完整的枚举类型,提供一个成员类型type的基础类型。T...

否则,行为就没有定义。

成员类型

NameDefinition
typethe underlying type of T

帮助者类型

template< class T > using underlying_type_t = typename underlying_type::type;(since C++14)

注记

各枚举类型有一个底层类型也可以是。

  • 显式指定%28范围和非作用域枚举%29。

  • 省略,在这种情况下是int对于作用域枚举或实现定义的整数类型,该类型能够表示非作用域枚举%29的枚举%28的所有值。

缺陷报告

以下行为更改缺陷报告追溯应用于先前发布的C++标准。

DRApplied toBehavior as publishedCorrect behavior
LWG 2396C++11incomplete enumeration types were allowedcomplete enumeration type required

二次

#include <iostream> #include <type_traits> enum e1 {}; enum class e2: int {}; int main() { bool e1_type = std::is_same< unsigned ,typename std::underlying_type<e1>::type >::value; bool e2_type = std::is_same< int ,typename std::underlying_type<e2>::type >::value; std::cout << "underlying type for 'e1' is " << (e1_type?"unsigned":"non-unsigned") << '\n' << "underlying type for 'e2' is " << (e2_type?"int":"non-int") << '\n'; }

二次

产出:

二次

underlying type for 'e1' is unsigned underlying type for 'e2' is int

二次

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/type/bob[医]类型