Рассмотрим следующую программу:
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. Если возможно, давайте избегать какого-либо поведения, зависящего от реализации.
Мне известен шаблон функции std :: addressof
C ++ 11, но я не заинтересован в его использовании здесь: я хотел бы понять как разработчик стандартной библиотеки может реализовать этот шаблон функции.