【发布时间】:2018-11-01 13:00:18
【问题描述】:
我想我隐约记得其中一个较新的 c++ 标准(可能是它的 c++11,或者可能是 14?...17??)允许您初始化一个结构,由此您可以定义一个结构,然后无需编写构造函数即可对其进行初始化。
例如:
struct test
{
int a;
int b;
std::string str;
};
int main()
{
std::map<int, test> test_map;
test_map[0] = test(1, 2, "test1"); // This is the line in question
// Or it might be more like: test_map[0] = test{1, 2, "test1"};
return 0;
}
我不记得这个特殊初始化的名称(或者它是否存在)!。所以我的问题是:
- 是否有一些新的机制来实现这一点,而无需在结构“test”中编写构造函数?
- 如果是这样,它叫什么(所以我可以阅读更多关于它的信息)。
如果这个“功能”不存在,那么请让我摆脱痛苦!可能是我的想象力造成的......
【问题讨论】:
-
您正在寻找
uniform initialization。 -
@SergeyA 谢谢! :)) - 作为答案,我会标记它
-
@Slava 嗯...这看起来像同一件事?:mbevin.wordpress.com/2012/11/16/uniform-initialization
-
fwiw:请注意
vector<int>(5,0)!=vector<int>{5,0}
标签: c++ c++11 struct initialization