Problem mit Template Spezialisierung
-
der bcb sagt jede menge^^
struct MyClassCountContainer { template <int N1 = 0, int N2 = 1>//[C++ Error] Unit1.cpp(4): E2270 > expected struct Count { static const int result = 0; };//[C++ Error] Unit1.cpp(8): E2321 Declaration does not specify a tag or an identifier }; template <> struct MyClassCountContainer::Count<>//[C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'Count' { static const int result = 1; };//[C++ Error] Unit1.cpp(15): E2428 Templates must be classes or functions template <class T> struct MyClass : public MyClassCountContainer { };
-
@otze:
soweit ich das sehe, ist der code aber korrekt.
-
tja, wenns aufm bcb und dem GCC nicht klappt, kann da aber was net stimmen^^
-
Mein gcc (3.3.2) schluckt den code aber:
struct MyClassCountContainer { template <int N1 = 0, int N2 = 1> expected struct Count { static const int result = 0; }; }; template <> struct MyClassCountContainer::Count<> //alternativ: //struct MyClassCountContainer::Count<0,1> { static const int result = 1; }; template <class T> struct MyClass : public MyClassCountContainer { };
oder meinst du einen anderen code?
-
ne das is der der gemeint war.
irgendwelche spracherweiterungen an?
-
otze schrieb:
ne das is der der gemeint war.
irgendwelche spracherweiterungen an?ich kompiliere per
g++ -W -Wall -std=c++98 -Woverloaded-virtual -pedantic -Wfloat-equal -Wundef -Wpointer-arith -Wconversion -Wsign-compare -Wuninitialized -O -Wunused -Wunreachable-code -DDEBUG $*
Aber einfach per
g++ test.cpp
klappt der code auch...und Comeau findet den code auch ok.
-
Morgen,
Mein BCB5 schluckt den Code ohne Probleme.
-
komisch..wieso nimmt den mein bcb6 net-.-
-
war da nicht mal was damit, dass man Member nicht spezialisieren kann?
Der GCC 3.3.3 weigert sich auch
Ja, das hatten wir weiter oben schon geklärt
-
kingruedi schrieb:
Der GCC 3.3.3 weigert sich auch
Also ich hab jetzt neben dem MSC 7.1 den Code auch durch den GCC 3.3.3 (mit -std=c++98) gejagt und der nimmt ihn anstandslos. Und wenn der Comeau ihn ebenfalls ok findet, denke ich mal ist er auch ok. Warum der bcb6 meckert, kann ich nicht nachvollziehen und will das an dieser Stelle einfach mal vernachlässigen.
thx nochmal an alle