Warum sind die Konstruktions- und Zerstörungsfunktionen von std :: allocator in c ++ 17 veraltet?
Die c ++ 17-Spezifikation ersetzt dasconstruct
unddestroy
Mitglieder vonstd::allocator
Objekt. Die Arbeitsgruppe lieferte Gründe für die Abwertung anderer MitgliedsfunktionenHie, unter der Überschrift "Veraltet die überflüssigen Mitglieder von std :: allocator".
Sie erwähnen jedoch nicht speziell, warum diese beiden Mitglieder veraltet sind oder welche Empfehlung zum Ersetzen dieser Funktionalität besteht. Ich gehe davon aus, dass die Implikation ist, @ zu verwendstd::allocator_traits::construct
stattdessen
Ich bin ein bisschen verwirrt darüber, ob die Umsetzungconstruct
kann aber in manchen Fällen tatsächlich noch notwendig sein, weildieser Kommentar zustd::allocator_traits::construct
Da diese Funktion die automatische Zurücksetzung auf die neue Platzierung ermöglicht, ist die Member-Funktion construct () eine optionale Allocator-Anforderung seit C ++ 11.
Für benutzerdefinierte Allokatoren (z. B. für seitenausgerichteten Speicher mitmemalign
), wird auf Placement @ zurückgesetnew
Immer das richtige Verhalten erzeugen?