Почему я не могу специализировать вложенный член шаблона без предварительной специализации шаблона вложенного класса?

Вот код:

template <typename T>
struct A
   {
   template <typename U>
   struct B;
   };
template <typename T> template <> // 0_o
struct A<T>::B<int> {};

Я знаю, что не могу этого сделать, но меня больше интересует логический вопрос: почему я не могу специализировать вложенный член шаблона, не специализируя сначала вложенный шаблон класса?

Буду благодарен за любую помощь с логическим объяснением :)

Редактировать :

Ответ Андрея Александреску: "Нет никакой особой причины - это просто правило языка. "

14
задан Mr.Anubis 17 February 2012 в 17:11
поделиться