使用std :: addressof()函数模板而不是在C++中使用operator&是否有任何优势?

Des*_*tor 84 c++

如果addressof operator&运行良好,那么为什么C++引入了addressof()函数?该&运营商从一开始的C++部分-为什么推出这个新功能呢?它是否比C的&运营商具有任何优势?

Bau*_*gen 137

operator&对于类类型,一元可能会重载,以便为您提供除对象地址之外的其他内容,同时 std::addressof()始终会为您提供实际地址.
举例:

#include <memory>
#include <iostream>

struct A {
    A* operator &() {return nullptr;}
};

int main () {
    A a;
    std::cout << &a << '\n';              // Prints 0
    std::cout << std::addressof(a);       // Prints a's actual address
}
Run Code Online (Sandbox Code Playgroud)

如果你想知道这样做是否有用:有
什么合理的理由来重载一元运算符&?