Compiler-Bug im GNU GCC Compiler, der bei Code::Blocks enthalten ist?



  • Folgender Code (noch nicht fertig, aber in dem Stadium tritt der Bug schon auf)

    #include <vector>
    
    template<class T> class Baum
    {
        private:
        class Element
        {
            private:
            Element(Element *vorgaenger, T &daten);
            T daten_;
            std::vector<Element*> nachfolger_;
            Element *vorgaenger_;
            public:
            void Add(T &daten);
            Element(T &daten);
        };
        Element *kopf_;
        public:
        class Iterator
        {
            private:
            Element *position_;
            public:
            void Add(T &daten);
            Iterator(Element *position);
            friend class Baum;
        };
        Iterator begin();
        Baum();
    };
    
    //Hier passierts
    template<class T> Baum<T>::Iterator Baum<T>::begin()
    {
        return Iterator(kopf_);
    }
    

    Erzeugt in dem GNU GCC Compiler, der der Code::Blocks IDE beiliegt folgende Fehler:

    error: expected constructor, destructos, or type conversion before "Baum"
    
    error: expected ';' before "Baum"
    

    Im Comeau (Online-Test) kompiliert der aber ohne Fehler und ohne Warnungen durch 😮

    Bin ich jetzt dumm, oder könnte das ein (evtl. bereits bekannter) Compiler-Bug sein?



  • Dein Quellcode ist falsch. Das sollte so sein:

    template<class T> typename Baum<T>::Iterator Baum<T>::begin()
    


  • Stimmt, danke. Jetzt wundere ich mich allerdings, wieso sich der Comeau (der soll den Standard doch so gut umsetzen, siehe export etc) da nicht beschwert...


Anmelden zum Antworten