<p>In the Google C++ Style Guide, there's a section on <a href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Operator_Overloading" rel="noreferrer">Operator Overloading</a> that has a curious statement:</p>

<blockquote>
  <p>Overloading also has surprising
  ramifications. For instance, you can't
  forward declare classes that overload
  <code>operator&amp;</code>.</p>
</blockquote>

<p>This seems incorrect, and I haven't been able to find any code that causes GCC to have a problem with it. Does anyone know what that statement is referring to?</p>

Edited to account for comments:
This is a guess, but one of the main reasons to forward declare is to be able to declare pointers to that class.  The compiler has to make assumptions about the class before having the definition - for example, the size of pointers.
Is it possible to change the size of T* by overloading operator& for a T? (EDIT: Commentors -- and I think not) -- but
What assumption is violated by overloading operator& -- how does it change the class?
Here is one way.
I could write:
```
```
class A;

void f(A& x) {
    A* xPointer = &x;
}
```
```
That has a new meaning if operator&() is overloaded than if not, and the compiler may think it can generate code for it, but it would be wrong.