Sto leggendo il codice sorgente STL al momento. Anche se capisco la carne in quello che sto leggendo in stl_list.h, voglio comprendere appieno il seguente frammento (principalmente correlato alla sintassi del template, penso).Una domanda sulla sintassi del template C++ (codice sorgente della libreria STL)
modello
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)
...
};
qualcuno può spiegare il motivo per cui abbiamo bisogno di un "modello" a seguito _Alloc in linea (1)? (e dando una spiegazione completa di questa linea?)
Qualcuno può spiegare perché possiamo trasmettere _Node_Alloc_type a _Alloc in linea (2)?
È necessario chiarire quale particolare implementazione di STL si sta guardando. Mentre l'interfaccia STL è standardizzata, l'implementazione varia da un fornitore all'altro. –