template <class T>
void foo(T arg) {
T var = arg;
}
这可能吗?我有类似的情况,我不能得到这样的东西。
谢谢。
答案 0 :(得分:4)
是的,上面的工作正常,因为这个最小的可编辑示例显示:
template <class T>
void foo(T arg)
{
T var = arg;
}
int main()
{
foo(23);
return 0;
}
问题必须出在您尚未发布的其他代码中:)
答案 1 :(得分:4)
是的,如果T是可复制的,它可能会起作用。 如果T是具有私有拷贝构造函数的类,则它可能不起作用:
class Noncopyable {
private:
Noncopyable(const Noncopyable&);
public:
Noncopyable() {}
};
template <class T>
void foo(T arg) {
T var = arg;
}
int main()
{
foo(Noncopyable());
}