有一个包含 POD 的结构体和默认构造函数被删除。尝试聚合初始化结构体实例会导致 g++9.1 编译时出现编译错误-std=c++2a
。相同的代码可以很好地编译-std=c++17
.
https://godbolt.org/z/xlRHLL
struct S
{
int a;
S() = delete;
};
int main()
{
S s {.a = 0};
}
Your struct
从 C++20 开始就不是聚合。
聚合的定义再次更改:
参考参数
聚合是以下类型之一:
IMO,这修复了语言中的缺陷。在我看来,能够使用已删除或不可访问的构造函数构造(使用聚合初始化)对象并不合适。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)