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;
Есть ли способ исправить это?
О, кажется, это [эта ошибка gcc] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52625). – sergej
Работает отлично в Xcode (Apple LLVM 7.0 с C++ 14) –
Не удается скомпилировать и g ++ 5.2.0. Работает в clang. – user2079303