我认为这是一个g ++错误,但我要求确认。
以下代码:
#include <complex>
#include <iostream>
int main()
{
std::complex<double> ac[10] = 23.5;
for (int i = 0; i < 10; ++i)
std::cout << ac[i] << ", ";
std::cout << std::endl;
return 0;
}
无法使用
在clang ++ 3.5上编译&#34;错误:数组初始值设定项必须是初始化列表&#34;)
但是使用g ++ 4.9.2编译,没有错误或警告。
g ++编译的可执行文件的输出是
(23.5,0), (23.5,0), (23.5,0), (23.5,0), (23.5,0), (23.5,0), (23.5,0), (23.5,0), (23.5,0), (23.5,0),
所以这个数组初始化
std::complex<double> ac[10] = 23.5;
使用等号右边的值作为数组的每个元素的初始化(并且,我认为,如果它是标准接受的特征,则可能有用)
如果我用std::complex<double>
数组替换double
数组
double ac[10] = 23.5;
g ++给出了类似于clang ++ one的错误:
&#34;错误:数组必须使用括号括起的初始化程序&#34;来初始化。
另一种情况:矢量数组
std::vector<double> ac[10] = std::vector<double>(3, 0.5) ;
g ++编译它(并初始化数组中的每个向量),clang ++给出了常见的错误。
所以我认为它只是在初始化类(struct?)类型的数组时出现的g ++错误。我要求确认。