Pour quelle raison je devrais utiliser std::get_temporary_buffer
? La norme indique les éléments suivants:
Obtient un pointeur de stockage suffisante pour stocker jusqu'à n adjacentes T des objets.
Je pensais que le tampon est alloué sur la pile, mais ce n'est pas vrai. Selon la Norme C++ ce tampon est pas temporaire. Quels sont les avantages de cette fonction sur la fonction globale ::operator new
, ce qui n'est pas de construire les objets. Suis-je en droit que les énoncés suivants sont équivalents?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
Cette fonction n'existe pas pour la syntaxe de sucre? Pourquoi est-il temporary
dans son nom?
Un cas d'utilisation a été suggéré dans le Dr Dobb's Journal, juillet 01, 1996 pour la mise en œuvre des algorithmes:
Si pas de tampon peut être alloué, ou si elle est plus petite que ce qui est demandé, l'algorithme fonctionne toujours pas correctement, Il se contente de les ralentit.