Eigentlich funktionieren beide nicht.
Es wurde entschieden, dass emplace-artige Konstruktfunktionen in C++ std
mit ()
s nicht {}
s aufbauen würden. Es gibt keinen starken Grund, warum das gewählt wurde (das weiß ich).
emplace_alt
snd make_unique_alt
könnte std
hinzugefügt werden, wo es {}
stattdessen Konstrukte verwenden. (ein besserer Name sollte natürlich gewählt werden)
Also die kurze Antwort ist "weil std
so sagt". Die mittlere Antwort lautet: "Es ist eine fast beliebige Wahl, die von std
gemacht wurde, gefolgt von anderen, um konsistent zu sein". Die lange Antwort würde beinhalten, in dem Raum zu sein, in dem es passiert ist und wo es wieder besucht wurde: das ist keine lange Antwort.
Funktioniert gut mit mir http://coliru.stacked-crooked.com/a/7c54feda67017bf1 (I auf die Struktur einen Konstruktor hinzuzufügen hatte, aber das ist alles) – Pumkko
Nein, beide [nicht erlaubt] (http://rextester.com/WBNIK94302). Wenn Sie einen ctor ('S :: S (int, int)') angeben, dann sind beide [in Ordnung] (http://rextester.com/UHWEW17433). – songyuanyao
@Pumkko ich meinte genau einfache Struktur ohne ctor :) – vladon