Рассмотрим следующую программу:
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 not clyde address :'( 
}
Как мне получить адрес clyde?
Я ищу решение, которое будет одинаково хорошо работать для всех типов объектов. Решение С++ 03 было бы неплохо, но меня тоже интересуют решения на С++ 11. Если возможно, избегайте любого поведения, специфичного для конкретной реализации.
Мне известно о шаблоне функций С++ 11 std::addressof, но я не заинтересован в его использовании здесь: я хотел бы понять, как разработчик Standard Library может реализовать этот шаблон функции.
