Не удалось вычислить аргумент шаблона класса при использовании назначенных инициализаторов с инициализацией спискаC++

Программы на C++. Форум разработчиков
Anonymous
Не удалось вычислить аргумент шаблона класса при использовании назначенных инициализаторов с инициализацией списка

Сообщение Anonymous »

Компиляторы (GCC и Clang) выдают ошибку при использовании синтаксиса инициализации фигурных скобок с назначенными инициализаторами при инициализации экземпляра шаблона структуры.
Вот:

Код: Выделить всё

template 
struct Foo
{
const T value;
};

int main( )
{
Foo foo { .value = 5 };        // compiles
// Foo foo { .value = { 5 } }; // does not compile
// Foo foo { .value { 5 } };   // does not compile
}
Сообщение об ошибке:

Код: Выделить всё

: In function 'int main()':
:11:30: error: class template argument deduction failed:
11 |     Foo foo { .value = { 5 } };
|
Что является причиной этого? Разве в этом контексте не разрешена инициализация списка? Или причина в чем-то другом?

Подробнее здесь: https://stackoverflow.com/questions/784 ... ializers-w

Вернуться в «C++»