C++ friend global template operator



  • Hallo,

    mit folgendem Code komme ich nicht weiter. Ich weiß einfach nicht wo der Fehler liegt. Über weitere Hilfe wäre ich sehr dankbar.

    Mir bereitet die friend-Deklartion auf einen globalen template Operator erhebliche Kopfschmerzen. Ich bekomme das auf dem GCC einfach nicht kompiliert.

    namespace n {
    template<typename T>
    class A;
    }
    
    template<typename T>
    n::A<T> operator + (const T v, const A<T> & ref);
    
    // ----------------------------------
    namespace n {
    template<typename T>
    class A
    {
    public:
      A<T> operator + (const T v) const;
    
    public:
      friend A<T> (::operator + < >) (const T v, const A<T> & ref);
    };
    }
    // stark vereinfacht, Tippfehler inclusive :-)
    

    Ich benutze
    - Eclipse
    - GCC 4.6.2
    - mit #define __GXX_EXPERIMENTAL_CXX0X__

    Eclipse meldet mir nach dem Compiliervorgang für die Zeile 18
    - Invalid overload of 'operator +'
    - Invalid overload of '::operator + <>'



  • Ist das die vollständige Fehlermeldung?



  • pyhax schrieb:

    Ist das die vollständige Fehlermeldung?

    Das ist die Meldung von Eclipse im Texteditor.

    Ich habe nun ein paar weitere Fehler korregiert und den Code erfolgreich compiliert. Anscheinend hat das CDT-Plugin mit dem Code so seine Probleme. Der GCC nicht 🙂 Kompiliert alles einwandfrei.

    Danke.


Anmelden zum Antworten