Per quale scopo dovrei usare std::get_temporary_buffer
? Standard dice quanto segue:
Ottiene un puntatore alla memoria sufficiente per memorizzare fino an oggetti T adiacenti.
Ho pensato che il buffer verrà allocato sullo stack, ma non è vero. Secondo lo standard C ++ questo buffer non è in realtà temporaneo. Quali vantaggi ha questa funzione rispetto alla funzione globale ::operator new
, che non costruisce nemmeno gli oggetti. Ho ragione che le seguenti affermazioni sono equivalenti?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
Questa funzione esiste solo per la sintassi dello zucchero? Perché c'è temporary
nel suo nome?
Un caso d'uso è stato suggerito nel Dr. Dobb's Journal, 1 luglio 1996 per l'implementazione di algoritmi:
Se non è possibile allocare alcun buffer, o se è più piccolo di quanto richiesto, l'algoritmo funziona ancora correttamente, si limita a rallentare.
std::get_temporary_buffer
sarà deprecato in C ++ 17.