直接使用初始化器列表只能使用一个数组作为成员初始初始化一个构造是合法的吗?

Is it legal to initialize a struct with only one array as member using a initializer list directly?

本文关键字:一个 初始化 列表 数组 成员      更新时间:2023-10-16
#include <iostream>
class vec
{
public:
    int  arr[2];
};

int main()
{
    vec a = { { 1,2 } };// works 
    vec b = { 1,2 };// works too ,but why ?
    std::cin.get();
}

vec除默认构造函数外没有构造函数。

但是这件代码编译,我想知道为什么。

http://ideone.com/uyx98o

汇总初始化是惊人的,您甚至不必使嵌套使其正常工作,您也可以提供比成员更少的值:

#include <iostream>
#include <string>
struct A {
    struct { int a; std::string b[3]; } a;
    double b, c;
};
int main() {
    A a = { 10, "a", "b", "c", 3.1415 };
    std::cout << a.a.a << " " << a.a.b[0] << " " << a.a.b[2]
              << " " << a.b << " " << a.c;
}

live