У меня есть структура, которая представляет собой 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?