c ++ - Kopierkonstruktor für Vorlagenklasse
Ich habe eine Vorlagenklasse mit einem Vorlagenkopiekonstruktor. Wenn ich diese Klasse mit einer anderen Instanz dieser Klasse mit demselben Vorlagentyp instanziiere, wird mein Vorlagenkopiekonstruktor nicht aufgerufen. Warum passt es nicht zusammen? Hier ist das Code-Snippet:
#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;
}
Die Ausgabe ist
default constructor
Aber wenn ich den Standard-Kopierkonstruktor explizit schreibe (indem ich ihn auskommentiere), wird die Ausgabe zu
default constructor
copy constructor
Ich verstehe es wirklich nicht. Ich habe es mit meinem lokalen Compiler (clang-500.2.79) und mit @ getestdiese (gcc 4.9.2) und bekam das gleiche Ergebnis.