Für welchen Zweck sollte ich verwenden std::get_temporary_buffer
? Standard sagt folgendes:
Erhält einen Zeiger auf die Speicherung, der ausreicht, um bis zu n benachbarte T-Objekte zu speichern.
Ich dachte, dass der Puffer auf dem Stapel zugewiesen wird, aber das ist nicht wahr. Nach dem C ++ Standard ist dieser Puffer eigentlich nicht temporär. Welche Vorteile hat diese Funktion gegenüber der globalen Funktion ::operator new
, die auch die Objekte nicht erstellt ? Habe ich recht, dass die folgenden Aussagen gleichwertig sind?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
Existiert diese Funktion nur für Syntaxzucker? Warum gibt es temporary
in seinem Namen?
Ein Anwendungsfall wurde im Dr. Dobb's Journal vom 1. Juli 1996 für die Implementierung von Algorithmen vorgeschlagen:
Wenn kein Puffer zugewiesen werden kann oder wenn er kleiner als angefordert ist, funktioniert der Algorithmus immer noch korrekt. Er verlangsamt sich lediglich.
std::get_temporary_buffer
wird in C ++ 17 veraltet sein.