Está haciendo una especialización de plantilla de función virtual legal?
En C ++, se supone que una especialización de plantilla de función actúa exactamente como una función normal. ¿Eso significa que puedo hacer uno virtual?
Por ejemplo
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 da el siguiente error:
error fatal C1001: se ha producido un error interno en el compilador.