给出以下代码:
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)