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...