мы можем объявить функцию template в обычном классе без класса шаблона, или она всегда должна быть внутри template class?
template
template class
можем ли мы объявить функцию шаблона в обычном классе без класса шаблона
Да, мы можем.Например,
class demo { public: template <typename T> void func(const T& x) { //do stuffs } }; int main() { demo d; d.func<int>(5); }
совершенно правильно
Да, у вас могут быть шаблонные функции и в не шаблонных классах, например ::100100
struct X { template<class T> void f(const T& t) { // ... } };
Да, вы можете, но убедитесь, что ваше определение и объявление функции шаблона находится в заголовочных файлах. Если вы хотите узнать больше, почему это так или больше о шаблонах в целом, я могу порекомендовать вам эту книгу Шаблоны - Полное руководство