Законно ли делать специализацию шаблона функции виртуальной?
В C ++ специализация шаблона функции должна действовать точно так же, как нормальная функция. Значит ли это, что я могу сделать один виртуальный?
Например:
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 дает мне следующую ошибку:
фатальная ошибка C1001: в компиляторе произошла внутренняя ошибка.