Вот немного кода, который может показаться, что он будет работать:
#include <cassert>
#include <limits>
enum test { A = 1 };
int main()
{
int max = std::numeric_limits<test>::max();
assert(max > 0);
}
Но это не удается как для GCC (4.6.2), так и для clang (2.9) для Linux: max() для типов перечислений на самом деле равен нулю! И это остается правдой, даже если вы используете спецификатор типа перечисления С++ 11, чтобы вкратце сказать, какой тип вы хотите, чтобы ваш enum имел.
Почему это? А что касается поведения С++ 11, нужно ли это что-то явно требовать? Я не мог найти упоминания об этом в N2347, в статье о сильно типизированных перечислениях.