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