max*_*x66 8 c++ arrays g++ language-lawyer clang++
我想这是一个g ++ bug,但我要求确认.
以下代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
无法在clang ++ 3.5上编译
"错误:数组初始化程序必须是初始化程序列表")
但用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),
Run Code Online (Sandbox Code Playgroud)
所以这个数组初始化
std::complex<double> ac[10] = 23.5;
Run Code Online (Sandbox Code Playgroud)
使用等号右边的值作为数组的每个元素的初始化(并且,我认为,如果它是标准接受的特征,则可能是有用的)
如果我用std::complex<double>
数组替换double
数组
double ac[10] = 23.5;
Run Code Online (Sandbox Code Playgroud)
g ++给出了类似于clang ++的错误:
"错误:数组必须用括号括起的初始化程序初始化".
另一种情况:一组向量
std::vector<double> ac[10] = std::vector<double>(3, 0.5) ;
Run Code Online (Sandbox Code Playgroud)
g ++编译它(并初始化数组中的每个向量)和clang ++给出通常的错误.
所以我认为这是一个g ++错误,仅在初始化类(struct?)类型的数组时才会发生.我要求确认.
归档时间: |
|
查看次数: |
44 次 |
最近记录: |