std::numeric_limits
为什么在 C++的模板类中, digits
(和其他)被定义为类的(静态常量)字段,但是min()
和max()
是方法,因为这些方法只返回一个字面值?
提前致谢。
std::numeric_limits
为什么在 C++的模板类中, digits
(和其他)被定义为类的(静态常量)字段,但是min()
和max()
是方法,因为这些方法只返回一个字面值?
提前致谢。
不允许在类主体中初始化非整数常量(例如:浮点)。在 C++11 中,声明更改为
...
static constexpr T min() noexcept;
static constexpr T max() noexcept;
...
为了保持与 C++98 的兼容性,我认为保留了这些功能。
例子:
struct X {
// Illegal in C++98 and C++11
// error: ‘constexpr’ needed for in-class initialization
// of static data member ‘const double X::a’
// of non-integral type
//static const double a = 0.1;
// C++11
static constexpr double b = 0.1;
};
int main () {
std::cout << X::b << std::endl;
return 0;
}