Законно ли выполнять частичную специализацию в классе класса-члена в производном классе?

Это продолжениеэтот вопрос. Мне особенно интересно, есличастичный специализациячленский класс как это:

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 прямо здесь в своем сообщении об ошибке?

Ответы на вопрос(1)

Ваш ответ на вопрос