发布于 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
复制相似问题