【发布时间】:2021-04-05 00:50:17
【问题描述】:
我使用过std::swap、std::move 和std::forward,但建议不要重载后两个参数,因为它们已经有可以保存任何类型值的参数,例如前向引用。所以我应该完全限定对这两个函数的调用:
std::move(x);
std::forward<T&&>(x);
而且我读到我可以提供我自己的swap 版本,因此我只为标准库添加一个usung 声明,然后调用swap 而不对其进行限定(非限定查找):
using std::swap;// in case my class doesn't provide a swap version
swap(x, y); // where x, y are of class type. so don't use std::swap directly
-
那么为什么我不应该为我的类型提供
std::move和std::forward的版本呢? -
这是否意味着如果我提供版本,则没有任何好处,因为库的版本更像是证明排序功能,而库的版本则要好得多?
【问题讨论】:
-
您认为提供
std::move的重载会是什么样子?