C++0x std::addressof

N3000から、operator&がオーバーロードされた型に対しても変数のアドレスを
取得できるstd::address関数が追加されています。
boost::addressofから取り入れられたものですね。

// <memory>
namespace std {
  ...

  // 20.8.13, specialized algorithms:
  template <class T> T* addressof(T& r);

  ...
}

template T* addressof(T& r);

Returns: the actual address of the obejct referenced by r, even in the presence of an overloaded operator&.
Throws: nothing.


C++0x言語拡張まとめ