5
operator&がオーバーロードされているときに、オブジェクトのアドレスを確実に取得するにはどうすればよいですか?
次のプログラムを検討してください。 struct ghost { // ghosts like to pretend that they don't exist ghost* operator&() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &clyde; // darn; that's not clyde's address :'( } clydeのアドレスを取得するにはどうすればよいですか? すべてのタイプのオブジェクトに対して同等に機能するソリューションを探しています。C ++ 03ソリューションがいいですが、C ++ 11ソリューションにも興味があります。可能であれば、実装固有の動作は避けてください。 C ++ 11のstd::addressof関数テンプレートは知っていますが、ここでは使用しません。標準ライブラリの実装者がこの関数テンプレートを実装する方法を知りたいのですが。