19 Stimmen

Wie behebt man den Fehler "erwarteter Primärausdruck vor" in C++-Schablonencode?

Hier ist noch ein VC9 vs. GCC 4.2 Kompilierfehler Problem. Der folgende Code kompiliert gut mit VC9 (Microsoft Visual C++ 2008 SP1), aber nicht mit GCC 4.2 auf Mac:

struct C
{
    template< typename T >
    static bool big() { return sizeof( T ) > 8; }
};

template< typename X >
struct UseBig
{
    static bool test()
    {
        return X::big< char >(); // ERROR: expected primary-expression
    }                            // before 'char'
};

int main()
{
    C::big< char >();
    UseBig< C >::test();
    return 0;
}

Haben Sie eine Idee, wie ich das Problem beheben kann?

43voto

Georg Fritzsche Punkte 95256

Das sollte sein

return X::template big< char >();

Abhängige Namen aus Vorlagen werden in no être Typen es sei denn, Sie geben an, dass sie über typename und angenommen, dass no être Vorlagen sofern nicht durch template .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X