簡體   English   中英

使用結構內初始化成員對struct進行統一初始化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM