#include <iostream>
#include <typeinfo>
using namespace std;
template<typename T1>
class Test
{
public:
Test()
{
cout << "Test()" << endl;
}
Test(T1 v)
{
cout << "Test(T1 v)" << endl;
}
template <typename T3>
Test(T3 v1, T1 v)
{
const type_info& tb = typeid(v1);
cout << "type of v:" << tb.name() << endl;
cout << "Test() template <typename T1, typename T2>" << endl;
}
void func1();
template <typename T4>
void func2();
};
template <typename T1>
void Test<T1>::func1()
{
cout << "func1" << endl;
}
template <typename T1>
template <typename T4>
void Test<T1>::func2()
{
cout << "func2" << endl;
}
int main(void)
{
Test<int> t1;
Test<int> t2(1,4.4);
Test<int> t3('a',3);
Test<int> t4(3);
t4.func1();
t4.func2<char>();
return 0;
}
输出: