Рассмотрим следующую программу:
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 может реализовать этот шаблон функции.