Está tornando uma especialização virtual de modelo de função lega

No C ++, uma especialização de modelo de função deve agir exatamente como uma função normal. Isso significa que eu posso fazer um virtual?

Por exemplo

struct A
{
    template <class T> void f();
    template <> virtual void f<int>() {}
};

struct B : A
{
    template <class T> void f();
    template <> virtual void f<int>() {}
};

int main(int argc, char* argv[])
{
    B b;
    A& a = b;
    a.f<int>();
}

Visual Studio 2005 me dá o seguinte erro:

erro fatal C1001: Ocorreu um erro interno no compilado

questionAnswers(3)

yourAnswerToTheQuestion