为什么std :: numeric_limits <t> :: max()是一个函数?</t>

时间:2010-05-04 14:44:07

标签: c++ const numeric-limits

C ++标准库中,将值std::numeric_limits<T>::max()指定为函数。特定类型的其他属性以常量形式给出(如std::numeric_limits<T>::is_signed)。类型T的所有常量都是作为函数给出的,而所有其他常量都是常量值。

背后的理由是什么?

1 个答案:

答案 0 :(得分:17)

为了扩展Neil的评论,std::numeric_limit<T>适用于任何数字类型,包括浮点数,如果你仔细阅读comp.lang.c++帖子,你会看到它可能不可能定义浮点值的静态变量。

因此,为了保持一致性,他们决定将积分和浮点放在方法之后。

它会随着C ++ 0x而改变,所以有希望。