
#include <iostream>

char f = 0;

struct Bad {
    operator char &() { return f; }
    Bad *operator&() { return 0; }
};

int main() {
    Bad b;
    std::cout << (void*)(&f) << "\n";
    std::cout << (void*)(&b) << "\n";
    std::cout << (void*)(&reinterpret_cast<char &>(b)) << "\n";
    std::cout << (void*)(&(char &)b) << "\n";
}
