c++ - 是 struct A { int a[2] = {1, 2}; };根据 C++11 是否合法?

标签 c++ visual-c++ c++11 compiler-errors standards

clang 3.4接受以下代码

struct A
{
    int a[2] = {1, 2};
};

但是,vc++ 2014 CTP 拒绝它并显示错误消息:

错误 C2536:“A::A::a”:无法为数组指定显式初始值设定项

哪个编译器是正确的?

最佳答案

是的,这是合法的,但 VC++ 不支持此功能。这是 uniform initializationin-class member initialization .

当然the = sign is optional并且您的代码与以下代码相同:

struct A
{
    int a[2] {1, 2};
};

关于c++ - 是 struct A { int a[2] = {1, 2}; };根据 C++11 是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816984/

相关文章:

c++ - MFC - 获取特定窗口的设备上下文

c++ - 访问线程内的主对话框变量 (MFC)

c++ - C++:有关使用Stroustrup示例的移动构造函数/赋值的问题

c++ - 如何将 std::chrono::system_clock::duration 转换为 struct timeval

c++ - 如何在 C++ 类中使用模板化结构

visual-c++ - #pragma 部分和属性

c++ - const char 数组模板 vs char const* 函数重载

multithreading - C++0x线程问题

c++ - 通过指向基的指针删除对象,而没有虚拟析构函数

c++ - 为可变参数模板中给定的所有类型添加模板特化