Estoy leyendo el código fuente STL en este momento. Aunque entiendo lo esencial de lo que estoy leyendo en stl_list.h, quiero comprender completamente el siguiente fragmento (principalmente relacionado con la sintaxis de la plantilla, creo).Una pregunta sobre la sintaxis de la plantilla C++ (código fuente de la biblioteca STL)
plantilla
class _List_base {
...
typedef typename _Alloc::template rebind<_List_node<_Tp> >::other _Node_Alloc_type; //(1).
...
typedef _Alloc allocator_type;
get_allocator() const
{ return allocator_type(*static_cast<
const _Node_Alloc_type*>(&this->_M_impl)); } // (2)
...
};
Puede alguien explicar por qué necesitamos una "plantilla" _Alloc siguiente en la línea (1)? (y dando una explicación completa de esta línea?)
¿Alguien puede explicar por qué podemos convertir _Node_Alloc_type en _Alloc en la línea (2)?
Debe aclarar qué implementación particular de STL está mirando. Mientras que la interfaz STL está estandarizada, la implementación varía de un proveedor a otro. –