c++ - 具有默认值的结构的大括号(聚合)初始化

标签 c++ c++11

使用默认值初始化结构很简单:

struct X { int a; int b = 2; };

使用大括号初始化器初始化结构也很简单:

X x = {1, 3};

令人惊讶的是,在我删除默认值之前,初始化代码不会编译。那么,在这种情况下我将如何进行初始化呢?我想保留 X 一个没有 c-tor 的 POD。

最佳答案

这里是一些与问题相关的文档:

http://en.cppreference.com/w/cpp/language/aggregate_initialization

您的代码无效。在 它再次有效。

在 C++11 中,添加默认初始化会阻止大括号初始化有效。在 C++14 中,它没有。

在 C++11 中解决问题的一种方法是编写一个构造函数,其值为 a,b 值为默认值。

关于c++ - 具有默认值的结构的大括号(聚合)初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344444/

相关文章:

c++ - enable_if 和构造函数与 VS2012

c++ - 当我使用 expire_at 时,Boost deadline_timer 没有生成事件?

c++ - 使用预处理器制作用户定义的文字

c# - 捕捉/录制窗口声音

c++ - 将现有套接字重新连接到新服务器所需的最少工作是什么?

c++ - libc++ 与 libstdc++ - 破坏了我的应用程序

c++ - 一个简单的 C++11 宏

c++ - 直接显示 (AMCap) - 平台 SDK

c++ - VB.NET 中的 TEA 实现

c++ - Windows MAX/MIN 宏作为模板