C++ c++;-使用聚合初始化初始化数组成员

C++ c++;-使用聚合初始化初始化数组成员,c++,initialization,aggregate,braces,aggregate-initialization,C++,Initialization,Aggregate,Braces,Aggregate Initialization,使用此代码: struct Structure { int a; char b[4]; }; void function() { int a = 3; char b[] = {'a', 'b', 'c', 'd'}; } 我可以使用聚合初始化用a和b的值初始化Structure吗? 我尝试了结构{a,b},但是这给了我一个错误无法用类型为'char[4]'的左值初始化'char'类型的数组元素。 struct S { int a; char b

使用此代码:

struct Structure {
    int a;
    char b[4];
};

void function() {
    int a = 3;
    char b[] = {'a', 'b', 'c', 'd'};
}
我可以使用聚合初始化用
a
b
的值初始化
Structure
吗?
我尝试了
结构{a,b}
,但是这给了我一个错误
无法用类型为'char[4]'的左值初始化'char'类型的数组元素。

struct S {
    int a;
    char b[4];
};

int main() {
    S s = { 1, {2,3,4,5} };
}

编辑:重读你的问题-不,你不能那样做。您不能用另一个数组初始化数组。

如果您熟悉参数包扩展我认为您可以,如下所示:

struct Structure {
    int a;
    char b[4];
};

template< typename... I, typename... C>
void function(I... a, C... b) {
    Structure s = { a..., b... }; // <- here -> a = 1 and b = 'a','b','c','d'
    std::cout << s.a << '\n';
    for( char chr : s.b ) std::cout << chr << ' ';
}

int main(){
    function( 1, 'a','b','c','d' );
}

如果您通过
std::array
同时更改
char b[]
,则是。
1
a b c d