Consider the following program:
struct ghost { // ghosts like to pretend that they don\'t exist ghost* operator&() const volatile { return 0; } }
Take a look at boost::addressof and its implementation.