namespace std {
template <class T>
constexpr underlying_type_t<T> to_underlying(T value) noexcept; // C++23
}
概要
列挙型T
の値を基底型に変換する。
列挙型はenum class E : int { … };
のようにコロンのあとに基底型を指定でき、指定しない場合の基底型はすべての列挙値を表現できる整数型となる。この関数では、列挙値を基底型に変換する。
戻り値
return static_cast<underlying_type_t<T>>(value);
例
#include <iostream>
#include <utility>
enum class Color : int {
Red = 0xff0000,
Green = 0x00ff00,
Blue = 0x0000ff,
};
void print_color_value(int color) {
std::cout << std::hex << std::showbase << color << std::endl;
}
int main() {
print_color_value(std::to_underlying(Color::Blue));
}
出力
0xff
バージョン
言語
- C++23
処理系
- GCC: 11.1 ✅
- Clang: 13.0 ✅
- Visual C++: ??