std::numeric_limits
специализируется на стандартной библиотеке "для каждого арифметического типа, как с плавающей точкой, так и целого числа, включая bool
" (§18.3.2.1 / 2).
Ваше перечисление test
равноне один из этих типов, поэтому используется основной шаблон.Его поведение определяется в §18.3.2.3 / 1: «Шаблон numeric_limits<T>
по умолчанию должен иметь всех членов, но со значениями 0
или false
».
Если вы хотите узнать чертыбазовый тип test
, вы можете использовать underlying_type
:
std::numeric_limits<std::underlying_type<test>::type>::max()
В качестве альтернативы, вы можете специализировать numeric_limits
для test
и заставить его возвращать нужные значения.Однако это не очень хорошая идея.