Dans quel but dois-je utiliser std::get_temporary_buffer
? Standard dit ce qui suit:
Obtient un pointeur vers le stockage suffisant pour stocker jusqu'à n objets T adjacents.
Je pensais que le tampon serait alloué sur la pile, mais ce n'est pas vrai. Selon la norme C ++, ce tampon n'est en fait pas temporaire. Quels avantages cette fonction a-t-elle sur la fonction globale ::operator new
, qui ne construit pas non plus les objets. Ai-je raison de dire que les affirmations suivantes sont équivalentes?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
Cette fonction n'existe-t-elle que pour le sucre syntaxique? Pourquoi y a-t-il temporary
dans son nom?
Un cas d'utilisation a été suggéré dans le Dr. Dobb's Journal du 1er juillet 1996 pour l'implémentation d'algorithmes:
Si aucun tampon ne peut être alloué, ou s'il est plus petit que demandé, l'algorithme fonctionne toujours correctement, il ralentit simplement.
std::get_temporary_buffer
sera obsolète en C ++ 17.