class base1{};
class derived1 :public base1
{};
class base2 {};
class derived2 :public base2
{};
template<class T1,class T2>
struct mypair
{
T1 first;
T2 second;
mypair() :first(T1()), second(T2()) {};
mypair(T1 a, T2 b):first(a),second(b) {
cout << "pair T create" << endl;
};
template<class U1,class U2>
mypair(const mypair<U1, U2> p) :first(p.first), second(p.second)
{
cout << "pair U create" << endl;
};
};
int main()
{
mypair <derived1, derived2> p;//绑定T1,T2类型分别为derived1, derived2,调用构造函数为默认构造
mypair<base1, base2 > pa(p);//绑定T1,T2类型分别为base1, base2 ,调用构造函数为pai(const pai<U1, U2> p) :
}