template <typename T>
struct A
{
template <typename U>
struct B;
template <>
struct B<int> {static const int tag = 1;}; // Works fine in VS2010
};
Как я могу специализироваться B так же, но за пределами A. Я попытался безуспешно:
template <typename T> template <>
struct A<T>::B<int> {static const int tag = 1;};
Я получил:
error C3212: 'A<T>::B<int>' : an explicit specialization of a template member must be a member of an explicit specialization
Это не имеет смысла, так как я могу сделать это точно, определив его внутри проблемы класса
VS2010?Неправильный синтаксис?
Спасибо
PS: Этот (который все равно должен быть неправильным, вылетает VS2010):
template <> template <typename T>
struct A<T>::B<int> {static const int tag = 1;};