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


Anmelden zum Antworten