C++ numeric_limits 常量和函数

标签 c++ std

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一个函数?

最佳答案

因为像 floatdoubleUDT static const 值无法在类中初始化,需要一个外部定义。简而言之,它们需要内存位置,而静态常量积分值则不需要(只要不获取指向它们的指针/引用)。

C++11中,这些函数应该被声明为constexpr,这克服了您可能从它们是函数而不是常量这一事实中看到的任何缺点。

关于C++ numeric_limits 常量和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14078445/

相关文章:

c++ - 我应该避免在这里使用指针吗?

c++ - 我应该什么时候返回 std::ostream?

c++ - 在 C++11 中,如何在 vector 上调用 std::max?

c++ - 如何编写漂亮的 C++ 注释的示例

c++ - Boost线程析构函数 undefined symbol

c++ - 在 cmake add_executable 中使用 *.cpp

c++ - 如何使用glVertexAttribPointer()添加非数组值

c++ - 如何使用线程处理标准容器?

C++ ~ 非常量引用的初始值必须是左值

c++ - 使用std::sort时如何理解此结果?