C++ 是否可以使用初始值设定项列表创建临时结构/类?
这看起来是一个非常基本的问题,应该有一个明确的谷歌答案,但我到目前为止还没有找到。答案似乎是否定的,但我想确定一下。 我的意思是这样的:C++ 是否可以使用初始值设定项列表创建临时结构/类?,c++,c++11,initialization,C++,C++11,Initialization,这看起来是一个非常基本的问题,应该有一个明确的谷歌答案,但我到目前为止还没有找到。答案似乎是否定的,但我想确定一下。 我的意思是这样的: struct A { int a,b; }; void foo(const A&); // just some function foo(A{1,2}); // doesn't work, but it was a long shot foo(A({1,2})); // looks like it could have worked, but it d
struct A { int a,b; };
void foo(const A&); // just some function
foo(A{1,2}); // doesn't work, but it was a long shot
foo(A({1,2})); // looks like it could have worked, but it doesn't
foo(A(std::initializer_list<int>({1,2}))); // ugly and doesn't work either anyway
结构A{inta,b;};
void foo(常数A&);//只是一些功能
foo(A{1,2});//不起作用,但这是一个远大的目标
foo(A({1,2}));//看起来它本可以起作用,但它不起作用
foo(一个(std::initializer_list({1,2}));//很丑,反正也不行
更新:
选项2实际上是有效的(以及更简单的foo({1,2})),但仅在vs2013中有效,而不是在2012年
更新#2:拜托,有必要这么严厉地否决吗?知道它只能从vs2013开始工作仍然很有用。甚至比这更容易。请看统一初始化的威力:
foo({1,2});
前两个给出的是什么错误?前两个应该可以正常工作。这是聚合初始化。偶数
foo({1,2})代码>应该可以,我想。无法复制。请问。你确定是在C++11模式下编译吗?@Anton你在什么地方定义了foo
?