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;};