¿Con qué propósito debo usar std::get_temporary_buffer
? Standard dice lo siguiente:
Obtiene un puntero de almacenamiento suficiente para almacenar hasta n objetos T adyacentes.
Pensé que el búfer se asignará a la pila, pero eso no es cierto. Según el estándar C ++, este búfer en realidad no es temporal. ¿Qué ventajas tiene esta función sobre la función global ::operator new
, que tampoco construye los objetos? ¿Tengo razón en que las siguientes declaraciones son equivalentes?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
¿Esta función solo existe para syntax sugar? ¿Por qué hay temporary
en su nombre?
En el Dr. Dobb's Journal, 1 de julio de 1996, se sugirió un caso de uso para implementar algoritmos:
Si no se puede asignar ningún búfer, o si es más pequeño de lo solicitado, el algoritmo aún funciona correctamente, simplemente se ralentiza.
std::get_temporary_buffer
quedará obsoleto en C ++ 17.