2015-09-28 78 views
5

考慮下面的C++代碼:克++錯誤:實例(模板類的朋友)後專業化

template <class T> 
class Singleton {}; 

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

int main() {} 

Singleton應爲朋友ConcreteSingleton

它與Microsoft的Visual C++編譯器。但是,我不能用g ++ 4.8.4編譯它。錯誤是:

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

有什麼辦法解決它嗎?

+2

哦,它似乎是[這個gcc bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52625)。 – sergej

+1

在Xcode(蘋果LLVM 7.0與C++ 14)中工作正常 –

+1

無法在g ++ 5.2.0上編譯。在叮噹中工作。 – user2079303

回答