Я писал код для шаблонного класса и понял, что для каждой функции мы должны написать объявление шаблона для каждой функции-члена при ее определении.
Например.
template <typename T>
class A {
public:
T func1();
T func2();
};
template<typename T>
T A<T>::func1() {/* code */}
template<typename T>
T A<T>::func2() {/* code */}
Существует ли какая-либо конкретная причина, по которой c ++ не предоставляет функциональности для написания этого с использованием синтаксиса, подобного приведенному ниже:
template <typename T> { // start of Templated block
class A {
public:
T func1();
T func2();
};
T A<T>::func1() {/* code */}
T A<T>::func2() {/* code */}
} // This closing brace marks the end of templated block. one template declaration for multiple definitions.