Специализация наследуемого вложенного шаблона класса

Следующий исходный код взят из:Понимание частичной специализации унаследованных вложенных шаблонов классов

#include <type_traits>
struct Base
{
    template<class U, class _ = void> struct Inner: std::true_type {};
    template<class _> struct Inner<char, _>: std::false_type {};
};
struct Derived : Base
{
};

template<class _> struct Derived::Inner<int, _>: std::false_type {};

У меня была проблема со специализацией унаследованного класса, поэтому я погуглил и выяснил вопрос выше. Исходный код в вопросе выше скомпилирован без каких-либо проблем в gcc / clang, но msvc отказывается компилировать его, выдавая C2427 (см.https://msdn.microsoft.com/en-us/library/10het5hx.aspx).

Ситуация, описанная выше (специализирующаяся на вложенном шаблонном классе не шаблонного класса), сильно отличается от ситуации, описанной вhttps://msdn.microsoft.com/en-us/library/10het5hx.aspx (определить вложенный не шаблонный класс шаблонного класса), я думаю.

Какой из MSVC против GCC / Clang не так? Или просто по стандарту так непонятно указывать такое поведение?

Я надеюсь, что MSVC не так ...

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

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