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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage