【发布时间】:2016-06-10 23:19:19
【问题描述】:
我尝试在笔记本电脑上使用 g++ 4.8.4 编译以下代码:
#include <algorithm>
#include <iostream>
#include <initializer_list>
#include <tuple>
struct Storage {
static const int num_spatial_subset = 8;
static constexpr std::initializer_list<std::initializer_list<double>> vectors{ {0,0,0},
{0,1,0},
{0,0,1},
{1,1,0},
{1,0,1},
{0,1,1},
{1,0,0},
{1,1,1} };
double storage[num_spatial_subset][vectors.size()];
};
int main()
{
}
我收到了这个错误信息:
error: field initializer is not constant
constexpr std::initializer_list< std::initializer_list<double> > vectors{ {0,0,0}, {0,1,0}, {0,0,1}, {1,1,0}, {1,0,1}, {0,1,1}, {1,0,0}, {1,1,1} };
但是,我在 coliru (g++ 6.1.0) 上复制/粘贴了相同的代码,使用相同的编译参数并且它可以工作。
谁能告诉我怎么了?
谢谢。
【问题讨论】:
-
我认为
gcc 4.8.4中的 C++11 支持仍处于试验阶段,如果升级到gcc 4.9我认为它应该有更好的工作机会。 -
鉴于它适用于现代编译器,我不会在旧版本的正确性上投入任何资金。如果您需要支持“古老的”编译器,请不要对现代语言功能抱有幻想。
标签: c++ compilation g++