У меня есть класс шаблона, который имеет некоторые конструкторы копирования шаблонов и это работа. Но я хочу специализировать конструктор копирования для int и не могу этого сделать. Эта программа печатает: «CC». Но нужно: «iC» Помогите мне, пожалуйста.шаблоны копировать конструкторы внутри класса шаблона
#include <cstdio>
#include <cstdlib>
#include <iostream>
template<class X>
class complex
{
public:
complex() {}
template<class T> complex(const complex<T>& c) {std::cout << "2";}
template<class T> complex(const complex<T*>& c) {std::cout << "1"; }
complex(const complex<X>& c) {std::cout << "C";}
template<int> complex(const complex<int>& c){std::cout << "i";}
};
int main(int argc, char *argv[])
{
complex<int> c1;
complex<double> c2;
complex<int> c3(c1); //2
complex<double> c4(c2);
}
Я мог бы сделать это сегодня, добавив новый класс со специализацией. 'шаблон шаблон комплекс (Const комплекс & с) {станд :: соиЬ << "2";} \t шаблон комплекс (const complex & c) {std :: cout << "1"; } \t complex (const complex & c) {std :: cout << "Базовая копия con" << std :: endl;} }; шаблон <> комплекс класса { общественности: \t комплекс() {} \t комплекс (Const комплекс & с) {станд :: соиЬ << "я";} }; ' –
комплекс класса { общественности: \t комплекс() {} \t