我几乎可以肯定这已经在某个地方得到了回答,但是我找不到它,所以我就问一下。
编译正常
template <int SIZE, unsigned int NUMSYNC>
class MyClass{
private:
std::uniform_int_distribution<int> randomNumberDistribution{ 0, SIZE };
}
不编译(常量SIZE不是类型名称)
template <int SIZE, unsigned int NUMSYNC>
class MyClass{
private:
std::uniform_int_distribution<int> randomNumberDistribution( 0, SIZE );
}
与传统方法相比,我试图了解这种差异以及括号初始化的工作原理。
我正在使用C ++ 14进行编译
答案 0 :(得分:4)
这是由于标准中的定义。否则,编译器在解析代码时可能无法将其与成员函数声明区分开。
2)通过默认成员初始化程序,该成员初始化程序是成员声明中包含的括号或等于初始值设定项,如果从构造函数的成员初始化程序列表中省略了该成员,则使用该默认成员初始化程序。 (我强调)