_com_ptr_ has an overloaded operator&() with a side effect. If I have a variable:
_com_ptr_t variable;
How could I ret
I've seen this case pop up in an ISO meeting as it broke some offsetof() macro implementations (LWG 273). The solution: &reinterpret_cast<unsigned char&>(variable)
&variable.GetInterfacePtr();
I define this utility function:
template<typename T>
T *GetRealAddr(T &t)
{ return reinterpret_cast<T*>(&reinterpret_cast<unsigned char &>(t)); }