Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: 为什么 std::numeric_limits<T>::max() 是一个函数?
为什么numeric_limits<T>::has_infinity是 const 值而numeric_limits<T>::infinity不是?为什么要做numeric_limits<T>::infinity一个函数?
numeric_limits<T>::has_infinity
numeric_limits<T>::infinity
因为诸如float,double或UDT 静态常量值之类的东西不能在类中初始化,需要外部定义。简而言之,它们需要一个内存位置,而静态 const 整数值不需要(只要不采用对它们的指针/引用)。
float
double
UDT
在C++11中,应该声明这些函数constexpr,这克服了您可能从它们是函数而不是常量这一事实中看到的任何缺点。
constexpr