在复制和交换习语的漂亮答案中,有一段代码我需要一些帮助:
class dumb_array
{
public:
// ...
friend void swap(dumb_array& first, dumb_array& second) // nothrow
{
using std::swap;
swap(first.mSize, second.mSize);
swap(first.mArray, second.mArray);
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
他补充说明
还有其他声称我们应该专门为我们的类型使用std :: swap,提供一个类内交换以及一个自由函数交换等等.但这都是不必要的:任何正确使用swap都将通过一个不合格的调用,我们的功能将通过ADL找到.一个功能就可以了.
随着friend我对"不友好"的条款一点,我必须承认.所以,我的主要问题是:
swap静态的?它显然不使用任何成员变量.friend进来?副题:
swaps的noexcept?friend iter begin()和friend iter end()在类中以同样的方式?我觉得friend这里不需要,对吗?