C ++ numeric_limits常量和函数

时间:2012-12-29 03:28:52

标签: c++ std

  

可能重复:
  Why is std::numeric_limits<T>::max() a function?

为什么numeric_limits<T>::has_infinity是一个const值而numeric_limits<T>::infinity不是?为什么要使numeric_limits<T>::infinity成为一个函数?

1 个答案:

答案 0 :(得分:4)

因为floatdoubleUDT 静态const 等值无法在类中初始化并需要外部定义。简单来说,它们需要一个内存位置,而静态const积分值则不需要(只要没有指向它们的指针/引用)。

C ++ 11 中,这些函数应该被声明为constexpr,这可以消除你可能看到的任何缺点,因为它们是函数而不是常量。