C++ addressof 与 移动函数实践 std::addressof 用于获得真实地址,无视 operator& 的重载。 因此为了避免 operator& 重载问题,应该在移动函数判重中使用 std::addressof 1 2 3 4 5 6 7 8 9 10 11 auto MyClass(Myclass&& another) noexcept { if (&another != this) { /* ... */ } // ill-formed if (std::addressof(another) != this) { // ok /* ... */ } return *this; } auto operator=(Myclass&& another) noexcept { /* ... */ } // 同理