Daily bit(e) C++ #179, Утилита C++11 std::addressof для получения фактического адреса объекта.
Утилита C++11 std::addressof решает очень простую проблему.
Как получить фактический адрес объекта, если встроенный оператор адреса может быть перегружен?
#include <memory> #include <cassert> struct X { X* operator&() { return nullptr; } }; X x; // overload for operator& always returns nullptr assert(&x == nullptr); // actual address of the object assert(std::addressof(x) != nullptr);