Этот код отлично компилируется с помощью GCC 5.X, MSVC, но GCC 6.X дает ошибку:
"преобразование в" a "из списка инициализаторов будет использовать явный конструктор" a :: a() "," выбранный конструктор "clang" явно выражен в копировании-инициализации ".
Удаление explicit
или переход на ac{}
устраняет проблему, но мне любопытно, почему она работает именно так.
class a
{
public:
explicit a () {}
};
struct b
{
a c;
};
int main() {
b d{};
}