标签: c++ templates move-semantics rvalue-reference
谁能解释一下这两个功能之间的区别?
template<typename T> void f(T&& a) { } void f(int&& a) { } int main(){ int a = 3; f(a); }
如果我只有模板版本,则代码可以编译并正常工作。 但是,如果我删除模板并保留int &&版本,则编译器会抱怨,我必须 将调用转换为f(std :: move(a))使其起作用。 有人可以在这里给我解释一下吗? 预先感谢。