g ++错误:实例化后的专门化(模板类为朋友)

ser*_*gej 5 c++ g++ friend c++11 g++4.8

考虑以下C++代码:

template <class T>
class Singleton {};

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

int main() {}
Run Code Online (Sandbox Code Playgroud)

Singleton应该是一个朋友ConcreteSingleton:

它适用于Microsoft的visual C++编译器.但是,我无法用g ++ 4.8.4编译它.错误是:

   error: specialization of ‘Singleton<ConcreteSingleton>’ after instantiation
       template <class T> friend class Singleton;
Run Code Online (Sandbox Code Playgroud)

有没有办法解决它?

Lig*_*ica 3

这是GCC 错误 #52625

\n\n

从其评论中窃取的解决方法:

\n\n
   template <class T>\n   friend class ::Singleton;\n//              \xe2\x96\xb2\xe2\x96\xb2\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经验证您的代码不起作用,而此代码可以

\n