C では、厳密に型指定された列挙型は従来の列挙型よりも高い型安全性を確保します。ただし、従来の列挙型とは異なり、厳密に型指定された列挙型を整数型に暗黙的に変換することはできません。
厳密に型指定された列挙値 E を整数型に変換するには、次のような明示的なキャストが必要です。
<code class="cpp">int i = static_cast<int>(b::B2);</code>
ただし、列挙型の基礎となる型が不明な場合は、次のテンプレート関数を使用できます:
<code class="cpp">template <typename E> constexpr typename std::underlying_type<E>::type to_underlying(E e) noexcept { return static_cast<typename std::underlying_type<E>::type>(e); }</code>
今後は、基礎となる型を明示的に指定せずに変換を実行できます:
<code class="cpp">std::cout << foo(to_underlying(b::B2)) << std::endl;</code>
この変換は、厳密に型指定された列挙型の値に対してのみ機能することに注意することが重要です。従来の列挙値が to_underlying() に提供された場合、エラーが発生します。
以上がC で厳密に型指定された列挙型を整数に明示的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。