1. Revision History
1.1. Revision 0
Initial Release 🎉
2. Motivation
To date, there have only ever been two widely used libraries that utilize
overloading the addressof operator (
Eventually removing the ability to overload the addressof operator will let us
also remove 
3. FAQ
3.1. Will this break code?
No. We’re only deprecating the addressof operator. At some point in the future, it is assumed users will have migrated off of overloading the operator in favor of some function interface. At that point then we’ll remove overloading the addressof operator altogether.
3.2. What’s so bad about overloading the addressof operator?
Although it is possible to do so in the language, one will note that the
standard library at no point provides this overload itself (nor does it for 
4. Wording
Wording is relative to [N4762]
In 11.3.1.2 Operators in expressions [over.match.oper], paragraph 3, add a new bullet point:
     (3.4) — [Note: overloading the unary operator  & 
   In 11.5.1 Unary Operators [over.unary] add a new paragraph
     3[Note: overloading the unary operator  & 
   In annex D, add a new paragraph
**Overloading unary** Overloading the unaryoperator & operator is deprecated. [Note: Using the builtin unaryoperator & is not deprecated — end note]. [Example:operator & — end example].struct X { Z * operator & () const ; // deprecated }; X x ; Z * z = & x ; // deprecated struct Y { }; Y y ; Y * w = & y ; // Not deprecated