Почему std :: numeric_limits <T>:: max () является функцией? - PullRequest
27 голосов
/ 04 мая 2010

В стандартной библиотеке C ++ значение std::numeric_limits<T>::max() указано как функция. Другие свойства определенного типа задаются как константы (например, std::numeric_limits<T>::is_signed). Все константы, имеющие тип T, даны как функции, тогда как все остальные константы, как, ну, в общем, постоянные значения.

Что за этим стоит?

1 Ответ

17 голосов
/ 04 мая 2010

Чтобы расширить замечание Нила, std::numeric_limit<T> доступно для любого типа чисел, включая числа с плавающей запятой, и если вы перебираете поток comp.lang.c ++ , вы увидите, что он может быть невозможно определить статические переменные для значений с плавающей запятой.

Таким образом, для согласованности они решили поставить как целые, так и плавающие точки за методами.

Это изменится с C ++ 0x, так что есть надежда.

...