Почему список инициализаторов нельзя использовать в качестве аргумента?

struct X
{
int a;
int b;
};

int f(X x)
{
return x.a + x.b;
}

int main()
{
int n = f({1, 2});
}

Visual Studio 2012 (ноябрьская CTP) сообщает:

error C2664: 'int f(const X &)' : cannot convert parameter 1 from
'initializer-list' to 'X'

Reason: cannot convert from 'initializer-list' to 'X'
Only an initializer-list with zero or one elements can be converted to this type

Build FAILED.

4

Решение

Visual Studio 2012 (ноябрьская CTP) сообщает:

Это даже не бета компилятор. Это должно работать. Я бы сослался на ваш код, работающий над ideaone, но этот сайт не позволит этого сделать.

Подайте отчет об ошибке на нем.

1

Другие решения

Если вы хотите передать синтаксис стиля списка инициализаторов в ваш конструктор, тогда вы должны передать std::initializer_list введите ваш конструктор. Этот тип затем создаст массив ваших типов при передаче { } синтаксическая конструкция стиля.

1

По вопросам рекламы [email protected]