Okay, I've been inspired to do some head punching. Seems like overloading operator&
leads to not a small amount of pain.
What legitimate cases exist for overloading it?
(Can't say I've ever done that....)
I seem to remember something like a smart pointer class which overrode operator&
because it wanted to return the address of the contained pointer rather than the address of the smart pointer object. Can't remember where I saw it or whether it seemed like a good idea at the time.
Aha, remembered: Microsoft's CComPtr.
Edit: To generalize, it might make sense under the following conditions:
Returning anything other than a legitimate pointer would violate the principle of least astonishment.