考虑以下方案:
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解决方案感兴趣。如果可能的话,让我们避免任何特定于实现的行为。
我知道 C + + 11的 std::addressof
函数模板,但对在这里使用它不感兴趣: 我想了解标准库实现者如何实现这个函数模板。