Does the C++11 standard specify that the numeric_limits<T>::min
and max
have to be constant-expression that can be used in templates or static_assert
?
More generally, how to find the list of the functions that are constant-expression according to the standard?
Indeed the standard (or my latest working draft) lists all members of std::numeric_limits
in chapter 18.3.2.3 [numeric.limits] as constexpr
(it won't do any good to actually quote those definitions here), for the general templated version as well as all the builtin specializations (18.3.2.7 [numeric.special]). So yes, they are guaranteed to be constant expressions (for conforming implementations that also actually support constexpr
, of course).
As to your second, more general, question I cannot help you that much except just refer you to the C++ standard itself, whose latest draft, which doesn't really differ from the actual standard, is available for free. Or you might look at the more convenient but less binding cppreference.com.