There seems to be many relavent questions talking about pointer vs. reference, but I couldn\'t find what I want to know. Basically, an object is passed in by a reference:
The general solution is to use std::addressof, as in:
std::addressof
#include void foo(T & x) { T * p = std::addressof(x); }
This works no matter whether T overloads operator& or not.
T
operator&