Структура с `initializer_list` ctor внутри объединения? - PullRequest
1 голос
/ 13 февраля 2012

У меня есть структура, которая представляет собой POD, но для удобства я хочу, чтобы она имела std::initializer_list ctor. По умолчанию ctor, copy ctor и dtor являются неявными. Однако кажется, что использование initializer_list ctor дисквалифицирует структуру как POD, следовательно, она не может быть внутри объединения:

#include<initializer_list>
struct A{
   A(const std::initializer_list<int>&);
};

union{
   A a;
} a;

gcc 4.6 --std = c ++ 0x:

error: use of deleted function ‘<anonymous union>::._0()’
error: ‘<anonymous union>::._0()’ is implicitly deleted because the default definition would be ill-formed:
error: no matching function for call to ‘A::A()’

Есть ли вокруг? Связано ли это с функцией неограниченных союзов в c ++ 11?

1 Ответ

0 голосов
/ 13 февраля 2012

У самого объединения должен быть явный ctor - благодаря этой статье ):

union _u{
   A a;
   _u(){};
} a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...