Hay ciertos operadores del conjunto disponible que no se pueden sobrecargar. La razón general para esta restricción es la seguridad. Si estos operadores fuesen sobrecargables, podría de algún modo arriesgar o romper los mecanismos de seguridad, hacer las cosas más difíciles o confundir las costumbres existentes.
El operador de selección de miembros operator.. Actualmente, el punto tiene significado para cualquier miembro de una clase, pero si se pudiera sobrecargar, no se podría acceder a miembros de la forma normal; en lugar de eso debería usar un puntero y la flecha operator->.
El operador de indirección de puntero a miembro operator.*, por la misma razón que operator..
No hay un operador de potencia. La elección más popular para éste era operator** de Fortran, pero provoca casos de análisis gramatical difíciles. C tampoco tiene un operador de potencia, así que C++ no parece tener necesidad de uno porque siempre puede realizar una llamada a una función. Un operador de potencia añadiría una notación cómoda, pero ninguna funcionalidad nueva al lenguaje que compensara la mayor complejidad del compilador.
No hay operadores definidos por el usuario. Esto es, no puede crear nuevos operadores que no existan ya. Una parte del problema es cómo determinar la precedencia, y otra es que no hay suficiente necesidad como para justificar las complicaciones que supondría.
No puede cambiar las reglas de precedencia. Ya son bastante difíciles de recordar como para, además, dejar que la gente juegue con ellas.