如果在声明中初始化了非静态数据成员,它们是否允许将非静态数据成员声明为"auto"?例如:
struct S
{
    auto x = 5;  // in place of 'int x = 5;', which is definitely allowed
};
GCC 4.7拒绝上述代码,但它接受了int x = 5;.
假设这不是编译器错误,而是标准真的不允许它,为什么不呢?它与声明局部变量一样有用auto.
在C++ 11中,引入了一个新功能,程序员可以在类的定义中初始化类成员变量,请参阅下面的代码:
struct foo
{ 
  int size = 3;
  int id   = 1;
  int type = 2;
  unsigned char data[3] = {'1', '2', '3'};
};
这个初始化是在编译期间发生的,还是这个特性只是语法糖和成员变量在默认构造函数中初始化?