发布于 2021-07-25 07:47:39
粗略地说:std::ranges::swap
概括了std::swap
。
T
和U
是相同的,那么它就相当于调用std::swap
。有关细节,请参阅偏好页。
我必须说,我觉得这个功能有点混乱和巴洛克,但也许-更有经验的人对范围图书馆发展直觉,为什么它是有意义的。
发布于 2021-07-25 08:04:35
std::swap
有个问题。有可能在std
名称空间中没有更有效的交换函数。如果可用的话,您应该使ADL能够找到和使用它,否则使用std::swap
。它被称为“性病2步”:
using std::swap;
swap(a, b);
但是std::ranges::swap
没有这个问题,它将调用ADL应该调用的版本:
std::ranges::swap(a, b);
这里是一个演示。
https://stackoverflow.com/questions/68516546
复制相似问题