考虑以下函数声明:
template<typename T> f(const T& x); // Version 1
template<typename T1, typename T2> f(const MyClass<T1, T2>& x); // Version 2
如果我调用f
与 没有关系的类型,MyClass
将调用第一个版本。如果我f
使用MyClass
类型(无论模板参数类型是什么)调用,那么将调用第二个版本。但现在,考虑:
template<typename T1, typename T2, typename T3>
MyDerivedClass : public MyClass<T1, T2> {};
一个类型会调用什么版本的函数MyDerivedClass
?