2017-09-14 2 views
3

列挙型の値の範囲を知る方法はありますか?私はtype_traitsのようなテンプレートをstd::numeric_limitsのように期待していましたが、誰も見つけられませんでした。例えば固定されていない列挙子の範囲を知ることは可能ですか?

enum enm { A = -5, B = 3 }; 

std::cout << std::range_of_enum<enm>::min() << ', ' 
      << std::range_of_enum<enm>::max() << std::endl; 
// Prints -8, 7 with two's complement representation, and -7, 7 
// with one's complement representation. 

注:this questionに行き、「列挙型の範囲」(ただし非標準語)が何であるかを知らない人のために。彼らは直接形質を欠く場合

+2

残念ながら、有効な範囲を決定する複雑な一連のルールがありますが、結果にアクセスするための既成の方法はありません。 (また、ルールは[間違っていると思われます](https://github.com/cplusplus/draft/pull/1349) –

+0

「範囲」とはどういう意味ですか? –

+0

@NeilButterworth http://en.cppreference.com/w/cpp/language/enumと 'static_cast'を検索してください。 –

答えて

2

私が見てきたC++ 2A/2B反射提案(複数可)、これを計算するのに十分な強度よりも方法の詳細が表示されます。私は、2020年に標準化される可能性が高いか、100%を保証する最新提案のテキストも知らない。

関連する問題