Законно ли выполнять частичную специализацию в классе класса-члена в производном классе?
Это продолжениеэтот вопрос. Мне особенно интересно, есличастичный специализациячленский класс как это:
struct FooParent {
template <class>
struct Bar{ };
};
struct Foo: FooParent {
template <class T>
struct Bar<T*> {};
};
Я знаю, что это можно сделать внутри области имен:
template <class T>
struct Foo::Bar<T*>{ };
Но я также особенно заинтересован вв классе частичная специализация на уровне производного класса.
И clang, и gcc жалуются, когда сталкиваются с первым:
Clang утверждает, что существует явная специализация шаблонов, которая явно не встречается:
ошибка: явная специализация 'Bar' в области видимости класса
Здесь gcc немного менее многословен и говорит, что специализация шаблона члена должна выполняться в области пространства имен, что, очевидно, не относится к классу, не являющемуся производным.
ошибка: специализация 'template struct FooParent :: Bar' должна появиться в области имен
Gcc прямо здесь в своем сообщении об ошибке?