C++11标准是否规定, numeric_limits<T>::min
和 max
必须是可以在模板或 static_assert
中使用的常量表达式?
更一般地说,如何找到根据标准是常量表达式的函数列表?
C++11标准是否规定, numeric_limits<T>::min
和 max
必须是可以在模板或 static_assert
中使用的常量表达式?
更一般地说,如何找到根据标准是常量表达式的函数列表?
实际上,标准(或者我的最新工作草案)在第18.3.2.3 [numeric.limits]章列出了std::numeric_limits
的所有成员,包括通用的模板版本和所有内置的特化版本(18.3.2.7 [numeric.special])。所以,它们保证是常量表达式(当然,只有符合规范并支持constexpr
的实现才有效)。
至于你的第二个更一般的问题,除了向你推荐C++标准本身,最新的草案与实际标准没有太大区别,可以免费获取外,或者你也可以查看更方便但不太具约束力的cppreference.com。
constexpr
,是吧? - Christian Rau
constexpr
背后的主要动机是使numeric_limits中的内容成为常量表达式。 - Jesse Good