template <class T> void foo(T arg) { T var = arg; }
Возможно ли это?У меня похожая ситуация, и я не могу заставить что-то подобное работать.
Спасибо.
Да, это возможно и будет работать, если T является копируемым. Это может не сработать, если T является классом, который имеет конструктор частной копии:
class Noncopyable { private: Noncopyable(const Noncopyable&); public: Noncopyable() {} }; template <class T> void foo(T arg) { T var = arg; } int main() { foo(Noncopyable()); }
Да, вышеописанное работает отлично, как показывает этот минимальный скомпилированный пример:
template <class T> void foo(T arg) { T var = arg; } int main() { foo(23); return 0; }
Проблема должна быть в другом коде, который вы еще не опубликовали:)