Iterator returnen aus Templates Funktion
-
Irgendwie bringt mein Compiler, VC++ 6 mit SP6, Probleme wenn ich einen Iterator einer Liste aus einer Template Funktion returnen will.
#include <list> template <class T> std::list<double>::iterator insert(T t) { std::list<double>::iterator it; return it; }
'iterator' : Ist kein Element von 'list<double,class std::allocator<double> >'
und dann noch 9 weitere Folgefehler.Mach ich das Template-Zeug weg geht es.
Kann man da was gegen tun?
PS: Dieser Comeau Compiler den man Online benutzen kann, compiliert es.
-
Der GCC (3.3.4) kompiliert es auch ohne Probleme (gibt bei -Wall -W (warnungen) eben nur eine Warnung, dass man t nicht benutzt, aber das kann man ja getrost ignorieren :)).
Aber der MSVC++6 ist dafür bekannt, dass er den C++ Standard (besonders Templates) nicht so gut unterstützt. Vielleicht kannst du ja deinen Compiler upgraden oder wechseln.
-
Hallo,
falls es doch VC++ 6 sein muß, hilft ein typedef:
#include <list> typedef std::list<double>::iterator LIT; template <class T> LIT insert(T t) { std::list<double>::iterator it; return it; }
aber wie kingruedi schon angedeutet hat, in Sachen template-Einsatz begibt man sich mit dem VC++6 auf dünnes Eis.
MfG