Ist die Einlagerung mit PODs möglich? Es scheint in Visual Studio 2012 nicht zu funktionieren:
%Vor%Ist das nur ein Manko von Visual Studio 2012, oder funktioniert die Installation eines POD einfach nicht in C ++ 11?
Es gibt keinen Konstruktor X::X(int,int)
, was Ihr Aufruf von emplace_back
verwenden würde, um das Objekt X
zu konstruieren. Container verwenden allocator_traits<A>::construct(allocator, p, args)
, um Objekte zu konstruieren, wobei p
ein Zeiger auf einen zugewiesenen Speicherplatz und args
die Argumente sind, die an den Konstruktor übergeben werden. Dies wird von emplace_back
verwendet. Diese Funktion construct
ruft ::new((void*)p) T(std::forward<Args>(args)...)
auf, daher wird keine einheitliche Initialisierung verwendet.
xs.emplace_back({1, 2})
wird auch ein Fehler sein, trotz der Tatsache, dass ein Aggregat mit List-Initialisierung erstellt werden kann. Das liegt daran, dass eine in Klammern eingeschlossene Initialisierungsliste nicht weitergeleitet werden kann.