2015-09-28 7 views
5

den folgenden C++ Code vor:g ++ Fehler: Spezialisierung nach der Instanzierung (Template-Klasse als Freund)

template <class T> 
class Singleton {}; 

class ConcreteSingleton : public Singleton<ConcreteSingleton> { 
    template <class T> 
    friend class Singleton; 
}; 

int main() {} 

Singleton soll ein Freund von ConcreteSingleton sein:

Es arbeitet mit Microsoft Visual C++ Compiler. Aber ich kann es nicht mit g ++ 4.8.4 kompilieren. Der Fehler lautet:

error: specialization of ‘Singleton<ConcreteSingleton>’ after instantiation 
     template <class T> friend class Singleton; 

Gibt es eine Möglichkeit, es zu beheben?

+2

Oh, es scheint [dieser gcc Bug] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52625) zu sein. – sergej

+1

Funktioniert gut in Xcode (Apple LLVM 7.0 mit C++ 14) –

+1

Fehler beim Kompilieren auf g ++ 5.2.0. Arbeitet im Klang. – user2079303

Antwort

Verwandte Themen