【问题标题】:Has "In class member initialization" feature made into C++11?C++11 中是否包含“类中成员初始化”功能?
【发布时间】:2011-06-26 06:49:45
【问题描述】:

In class initialization feature,允许在类内部初始化普通成员,

struct A {
  int a = 0; // error: ISO C++ forbids in-class initialization of non-const static member ‘a’
};

这在最新的编译器 gcc-4.6 (-std=c++0x) 中出现错误。此功能是否已纳入 C++11 标准或 gcc 仍然不支持?

【问题讨论】:

  • 您的示例使用 clang (svn trunk) 编译得很好。
  • 你试过 gcc 4.7 吗?它可能已被纳入。
  • @Matthieu,我花了很多功夫在一周前的 Ubuntu 上安装了 gcc-4.6,假设它支持所有功能。现在我知道 gcc-4.7 已经发布了!! :'(
  • 我刚刚查看了发行说明 (gcc.gnu.org/gcc-4.7/changes.html),它似乎没有在 4.7 中实现。老实说,我发现 4.7 的变化相当轻(无论如何对于 C++),尽管我猜回顾模板的两阶段查找意味着一些努力!

标签: c++ c++11 in-class-initialization


【解决方案1】:

是的,这在 C++0x 中是合法的。在 N3290 §12.6.2/8 中有一个例子:

struct C {
    /* ... */
    int j = 5; // OK: j has the value 5
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多