【问题标题】:Brace initialization of scalars inside an aggregate聚合内标量的大括号初始化
【发布时间】:2013-09-25 10:41:33
【问题描述】:

知道这是有效的 c++11

int i {1};

这个有效吗?

int j[] {{1}};

GCC 给出错误,发出警告。

【问题讨论】:

  • 不必要的,你已经可以做到:int j[] = {1,2,3};

标签: c++ c++11 list-initialization aggregate-initialization


【解决方案1】:

这是无效的,因为jint(标量)的数组。你可以 仅对本身是聚合的成员使用嵌入式大括号。

#include <initializer_list>

struct T
{
    int x, y;    
};

int main() 
{
    int j[] {{1}}; // error, int is scalar
    T t[] {{1,2}}; // OK, T is aggregate
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多