爲什麼在C++中的模板類std::numeric_limits
中將digits
(和其他)定義爲該類的(靜態常量)字段,但min()
和max()
是方法,因爲這些方法只是返回一個litteral值?C++類中的字段與方法std :: numeric_limits
在此先感謝。
爲什麼在C++中的模板類std::numeric_limits
中將digits
(和其他)定義爲該類的(靜態常量)字段,但min()
和max()
是方法,因爲這些方法只是返回一個litteral值?C++類中的字段與方法std :: numeric_limits
在此先感謝。
不允許初始化非積分常數(例如:浮點數)的一類機構。 在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;
}
你是什麼意思?「不允許聲明一個非整數常量(例如:浮點數)」? –
在C++ 03中,只能在類體內定義整型常量。儘管如此,沒有什麼能夠阻止你在類體外定義一個浮點常量。 – Simple
@簡單感謝您的澄清。 –
我一直想知道的是我自己,特別是因爲之前'constexpr'一個的出現可能因此不能在模板參數使用'MIN()'和'MAX()'! –