Здравствуйте, Erop, Вы писали:
RO>>Для этого есть boost::numeric_cast, если сильно хочется. И вообще, если некий тип может содержать числа только от 0 до 42 и при этом не является enum, то что-то крепко не так.
E>Посмотри внимательнее! IntRange<0, 42>::Type -- он enum и есть!!! :)
enum Colors
{
AliceBlue = 0,
AntiqueWhite = 1,
BlueViolet = 2,
. . .
White = 41,
Yellow = 42,
};
E>А чем тут поможет boost::numeric_cast?
Он как раз использует std::numeric_limits<X>::{min|max}.