Existe-t-il un moyen de connaître la plage de valeurs d'une énumération? Je m'attendais à quelque type_traits
modèle comme std::numeric_limits
, mais je n'ai trouvé personne.Est-il possible de connaître la portée d'un énumérateur non-fixe?
Par exemple:
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.
REMARQUE: Pour ceux qui ne savent pas quelle est la "plage d'énumération" (terme non standard bien), aller à this question.
Malheureusement non. Il y a un ensemble complexe de règles qui détermine la plage valide, mais pas de façon toute faite pour accéder au résultat. (En outre, les règles sont [prétendument fausses] (https://github.com/cplusplus/draft/pull/1349).) –
Qu'entendez-vous par «range»? –
@NeilButterworth http://fr.cppreference.com/w/cpp/language/enum et recherchez 'static_cast'. –