einen POD einlagern [Duplikat]

9

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?

    
fredoverflow 19.12.2012, 22:06
quelle

1 Antwort

5

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.

    
Joseph Mansfield 19.12.2012, 22:13
quelle

Tags und Links