У меня есть этот простой код:
class A{};
class B : public A{};
class C : public B{};
class Test
{
public:
template<typename T>
void f(T&){printf("template\n");}
void f(A&){printf("specialization\n");}
};
int main()
{
A a;
B b;
C c;
Test test;
test.f(a);
test.f(b);
test.f(c);
}
Когда я запускаю его (VS2010), у меня есть этот вывод:
specialization
template
template
Можно ли использовать вызовы с классами A-derived
для использования специализации?