Possible Duplicate:
Why is std::numeric_limits<T>::max() a function?
为什么numeric_limits<T>::has_infinity
是一个 const 值并且 numeric_limits<T>::infinity
不是?为什么要制作numeric_limits<T>::infinity
一个函数?
最佳答案
因为像 float
、double
或 UDT
static const 值无法在类中初始化,需要一个外部定义。简而言之,它们需要内存位置,而静态常量积分值则不需要(只要不获取指向它们的指针/引用)。
在C++11中,这些函数应该被声明为constexpr
,这克服了您可能从它们是函数而不是常量这一事实中看到的任何缺点。
关于C++ numeric_limits 常量和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14078445/