Согласно Почему в типе, возвращаемом функцией, не допускается удержание аргумента?
При указании типа возвращаемого значения в функции-члене класса шаблона необходимо указать c, для пример: «тип std::vector
не является типом, std::vector<int>
- это.»
Так почему оба этих примера компилируются? Если я не включу <T>
в первый пример, его даже не следует рассматривать как правильный тип?
template<typename T>
Queue<T>::Queue(const Queue& st) {}
template<typename T>
Queue<T>::Queue(const Queue<T>& st) {}
Учитывая этот класс шаблона
template<typename T>
class Queue {
private:
struct Node {
Node (T value) : value(value), next(nullptr) {}
Node (T value, Node* next) : value(value), next(next) {}
T value;
Node* next;
};
Node* head;
size_t sz;
void cleanList();
public:
Queue();
Queue(const Queue& st);
Queue& operator=(const Queue& st);
~Queue();
size_t size() const noexcept;
bool isEmpty() const noexcept;
T& front();
const Tt& front() const;
void enqueue(const T& elem);
void dequeue();
};