我有了一个模板拷贝构造函数模板类。 问题是,当我实例使用这个类具有相同的模板类型的另一个实例这个类,我的模板拷贝构造函数没有被调用。 为什么它不匹配?
以下是代码片段:
#include <iostream>
template <typename T>
class MyTemplateClass
{
public:
MyTemplateClass()
{
std::cout << "default constructor" << std::endl;
}
/*
MyTemplateClass(const MyTemplateClass<T>& other)
{
std::cout << "copy constructor" << std::endl;
}
*/
template <typename U>
MyTemplateClass(const MyTemplateClass<U>& other)
{
std::cout << "template copy constructor" << std::endl;
}
};
int main()
{
MyTemplateClass<int> instance;
MyTemplateClass<int> instance2(instance);
return EXIT_SUCCESS;
}
输出是
default constructor
但是,如果我明确写出默认的拷贝构造函数(通过取消注释它),然后输出变为
default constructor
copy constructor
我真的不明白这一点。 我跟我的本地编译器(铛500.2.79),并测试了这一个 (GCC 4.9.2),得到了相同的结果。