此问题已在此处有答案:
How to get away with using designated initializers in C++17? Or, why is it seemingly safe to use them, if it's really not?(1个答案)
Designated initializers in C++20(2个答案)
3天前关闭。
在godbolt中:https://godbolt.org/z/bY1a3e1Wz
有问题的代码如下(错误消息显示“error:要么所有初始化子句都应该被指定,要么它们都不应该被指定为“但我不明白它在说什么”。
struct A {
int a;
bool b;
};
struct B : A {
long c;
};
int main(void) {
B foo {{.a = 1, .b = false}, .c = 7};
}
1条答案
按热度按时间jogvjijk1#
从我在docs中看到的,看起来应该可以工作:
原因似乎是第一个初始化器是“无名的”(按顺序),因此第二个(
c
)也应该按顺序而不是按名称初始化(不能是designated
)