字段初始值不是常量g ++ 4.8.4 [英] field initializer is not constant g++ 4.8.4

查看:157
本文介绍了字段初始值不是常量g ++ 4.8.4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在我的笔记本电脑上使用g ++ 4.8.4编译以下代码:

  #include< algorithm> 
#include< iostream>
#include< initializer_list>
#include< tuple>

struct存储{
static const int num_spatial_subset = 8;
static constexpr std :: initializer_list< std :: initializer_list< double>>向量{{0,0,0},
{0,1,0},
{0,0,1},
{1,1,0},
{1,0,1},
{0,1,1},
{1,0,0},
{1,1,1}};
双存储[num_spatial_subset] [vectors.size()];
};


int main()
{
}

我得到这个错误信息:

pre $ 错误:字段初始化器不是常量
constexpr std: :initializer_list<的std :: initializer_list<双> >向量{{0,0,0},{0,1,0},{0,0,1},{1,1,0},{1,0,1},{0,1,1}, {1,0,0},{1,1,1}};

然而,我在












有人告诉我什么是错误的吗?

谢谢。

实际上,正如克里斯和鲍姆指出的那样,更新到g ++ 4.9修复了它。


I tried to compile the following code on my laptop, using 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()
{
}

And I got this error message:

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} };

However, I copy/paste the same code on coliru (g++ 6.1.0), with the same compilation parameters and it worked.

Can someone tells me what is wrong please ?

Thank you.

解决方案

Actually, as pointed out by Chris and Baum, updating to g++ 4.9 fixed it.

这篇关于字段初始值不是常量g ++ 4.8.4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆