使用默认值初始化结构是微不足道的:
struct X { int a; int b = 2; };
Run Code Online (Sandbox Code Playgroud)
并使用大括号初始化程序初始化一个结构也是微不足道的:
X x = {1, 3};
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,在我删除默认值之前,init代码将无法编译.那么,在这种情况下我怎么做init呢?我想保持X没有c-tor的POD.
Hay*_*ayt 26
以下是与问题相关的一些文档:
http://en.cppreference.com/w/cpp/language/aggregate_initialization
在c ++ 11中,您的代码无效.在c ++ 14中它再次有效.
在C++ 11中,添加默认初始化会阻止braced init生效.在C++ 14中,它没有.
在C++ 11中解决问题的一种方法是编写一个构造函数,其值为a,b值为默认值.