компилятор говорит "invalid use of template-name 'C1' without an argument list"?
Реализация такая:
template<typename T>
class C1{
public:
C1(){}
};
template<typename T>
C1::C1(){
...
}
Потому что там разный синтаксис определения шаблонного метода, внутри класса и снаружи.
Вам необходимо предоставить аргументы шаблону типа. Т.е: template < typename Ty > C1<Ty>::C1 ( ) { /* ... */ }
template<typename T> C1<T>::C1(){ ... }
В таком случае компилятор говорит: redefinition of C1<T>::C1()
Значит, этот конструктор уже где-то был определён
Логично же. У тебя C1(){} в теле класса
Есть его сигнатура в классе, но и если её убрать, то компилятор снова жалуется
Я думал это два альтернативных варианта у тебя, так было, а так стало...
Обсуждают сегодня