Ich hatte den Eindruck, dass die folgenden LecksIst die Reihenfolge der Auswertung für Initialisierungslisten in Konstruktoren festgelegt?
anfällig istclass Something {
std::unique_ptr<A> a;
std::unique_ptr<int> b{new int{3}};
std::unique_ptr<C> c;
public:
Something() : a{new A{}}, c{new C{}} {};
};
, wenn die Reihenfolge der Auswertung der
new A{}
new int{3}
new C{}
a{}
folgenden wurde
b{}
c{}
ich einen Blick auf den neuen C++ 17-Funktion (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf), die Reihenfolge der Auswertung von Fehlern in früheren Versionen von C fixiert ++, aber es scheint nur über Funktionsargument Auswertungen zu sprechen .
Ich schaute mir die cppreference-Dokumentation in der Reihenfolge der Auswertung an (http://en.cppreference.com/w/cpp/language/eval_order) und es scheint auch nicht zu erwähnen.
Hat das Obige eine gut definierte Reihenfolge der Auswertung? (entweder jetzt in C++ 17 oder in früheren Versionen von C++)
Dies sind verschiedene Voll exp Sitzungen. –
@ T.C. Meine Frage ein wenig aktualisiert. – Curious
@ Jarod42 Tippfehler .. behoben, dass – Curious