[英]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 ++ 11根據構造函數定義默認成員初始值設定項。 也就是說,它們隱式地創建了一個構造函數。 因此,類型不再是聚合。
C ++ 14取消了這一點,允許聚合具有默認成員初始化器。 如果聚合提供替代,聚合將覆蓋默認成員初始化程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.