给出以下代码:
template<typename T>
class A
{
public:
T t;
};
class B
{
public:
void foo(int i) {}
template<typename T>
void foo(A<T>& a) {}
};
int main()
{
A<int> a;
B b;
b.foo(a );
b.foo(a.t);
}
Run Code Online (Sandbox Code Playgroud)
这编译并且工作正常; 正确重载版本B::foo()进行选择,并呼吁a和a.t.
现在我介绍一个新的类C,从派生B和移动的模板版本::foo()出来B,进入C:
template<typename T>
class A
{
public:
T t;
};
class B
{
public:
void foo(int i) {}
};
class C: public B
{
public:
template<typename …Run Code Online (Sandbox Code Playgroud)