В Библиотеке Стандарта C++ значение std::numeric_limits<T>::max()
указан как функция. Дальнейшие свойства определенного типа даны как константы (какstd::numeric_limits<T>::is_signed
). Все константы, которые имеют тип T
даны как функции, тогда как все другие константы даны как, ну, в общем, постоянные величины.
Каково объяснение позади этого?
Чтобы расширить замечание Нила, std::numeric_limit
доступен для любого типа чисел, включая числа с плавающей точкой, и если вы покопаетесь в потоке comp.lang.c++, то увидите упоминание о том, что может быть невозможно определить статические переменные для значений с плавающей точкой.
Поэтому для согласованности они решили поместить и интеграл, и плавающую точку за методы.
Это изменится в C++0x, так что есть надежда.