std::forward和std::move都用到了noexcept关键字,这个关键字的作用是告诉使用者,forward和move是不会抛异常的。对于右值引用或万能引用(universe reference),在它最后一次使用的地方加上move或forward,如下: classA{};voidfunc(A&&rhs){subfunc1(rhs);// 不是最后一次使用rhs,所以不能对其使用movesubfunc2(std:...
这时,std::move和std::forward的差异就显现出来。std::move是无条件地将变量转换为右值,用于实现move语义,而std::forward则是在变量为右值时有条件地进行转换,通常用于模板函数中保留原始变量的值属性,如在返回值为右值引用或万能引用的函数中,应在return语句中使用。值得注意的是,std::forward和s...