numeric_limits的min/max是否是constexpr?

5

C++11标准是否规定, numeric_limits<T>::min max 必须是可以在模板或 static_assert 中使用的常量表达式?

更一般地说,如何找到根据标准是常量表达式的函数列表?


新关键字constexpr背后的主要动机是使numeric_limits中的内容成为常量表达式。 - Jesse Good
1个回答

9

实际上,标准(或者我的最新工作草案)在第18.3.2.3 [numeric.limits]章列出了std::numeric_limits的所有成员,包括通用的模板版本和所有内置的特化版本(18.3.2.7 [numeric.special])。所以,它们保证是常量表达式(当然,只有符合规范并支持constexpr的实现才有效)。

至于你的第二个更一般的问题,除了向你推荐C++标准本身,最新的草案与实际标准没有太大区别,可以免费获取外,或者你也可以查看更方便但不太具约束力的cppreference.com


2
对于受影响的人来说,Visual Studio 2013 CTP November 2013没有constexpr numeric_limits,至少对于min()和max()函数是如此。 - Emily L.
@EmilyL。嗯,它根本没有constexpr,是吧? - Christian Rau
它部分地实现了...对于成员函数,它是“尚未实现”的。http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-69/0638.Updated-Conformance-Map.png - Emily L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接