2015-09-28 2 views
5

Рассмотрим следующий C++ код:г ++ ошибка: специализация после конкретизации (шаблон класса, как друга)

template <class T> 
class Singleton {}; 

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

int main() {} 

Singleton должен быть друг из ConcreteSingleton:

Он работает с Visual C от Microsoft ++ компилятор. Но я не могу скомпилировать его с g ++ 4.8.4. Ошибка:

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

Есть ли способ исправить это?

+2

О, кажется, это [эта ошибка gcc] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52625). – sergej

+1

Работает отлично в Xcode (Apple LLVM 7.0 с C++ 14) –

+1

Не удается скомпилировать и g ++ 5.2.0. Работает в clang. – user2079303

ответ

Смежные вопросы