El código de abajo da el error:error de compilación al definir STL iterador dentro de clase de plantilla
error: type ‘std::list<T,std::allocator<_Tp1> >’ is not derived from type ‘Foo<T>’
error: expected ‘;’ before ‘iter’
#include <list>
template <class T> class Foo
{
public:
std::list<T>::iterator iter;
private:
std::list<T> elements;
};
¿Por qué y si esto fuera a ser correcto?
Todavía no entiendo por qué esto es así. Por ejemplo, ¿por qué no necesitamos usar 'typename std :: list elements'? –
@Agnel: Porque entonces no intentaremos acceder a nombres definidos dentro de una clase de plantilla. – UncleBens