对具有结构内初始化成员的结构进行统一初始化
uniform initialization on struct with in-struct initialised members
在Apple LLVM 7.3.0版本中,包含结构初始化成员的结构实例的统一初始化导致以下错误:
error: no matching constructor for initialization of 'Foo'
以下是代码示例:
struct Foo
{
int foo1 = 0;
int foo2;
};
int main()
{
Foo foo{0, 1};
}
似乎在结构初始化中抑制了初始化器列表结构构造函数的生成。为什么?
因为您是在C++11下编译的,它根据构造函数定义了默认的成员初始值设定项。也就是说,它们隐式地创建了一个构造函数。因此,该类型不再是一个集合。
C++14取消了这一点,允许聚合具有默认的成员初始值设定项。如果聚合提供了替代项,它将覆盖默认的成员初始值设定项。
相关文章:
- 多成员Constexpr结构初始化
- 为什么用结构初始化数组需要指定结构名称
- 使用指定的初始值设定项聚合匿名结构初始化
- 不同的类或结构初始化方法之间的性能差异是什么?
- 如何在结构初始化中获取成员C++
- C++正确的结构初始化
- 使用大括号进行结构初始化
- 内部结构初始化不起作用 - C++
- 使用嵌套结构初始化并集
- 使用匿名结构初始化联合
- 结构初始化语法
- 结构初始化的 C++ 向量
- C++嵌套结构初始化和访问成员
- 结构初始化中的常量正确性
- 使用 C++ 中的自定义元素进行 Const 结构初始化
- 如何在结构C++初始化内置数组
- Visual C++ 模板类成员结构初始化语法糖
- C++结构初始化
- C 在结构初始化过程中带有内部阵列的奇怪错误
- 此C/C 的结构初始化器如何使用足够的字段工作