12.3.5. Operadores que no puede sobrecargar

Hay cierta clase de operadores en el conjunto disponible que no pueden ser sobrecargados. 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 mas difíciles o confundir las costumbres existentes.

  1. 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->.

  2. La indirección de punteros a miembros operator.* por la misma razón que operator..

  3. No hay un operador de potencia. La elección más popular para éste era operator** de Fortram, 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á una notación adecuada, pero ninguna nueva funcionalidad a cuenta de una mayor complejidad del compilador.

  4. No hay operadores definidos por el usuario. Esto es, no puede crear nuevos operadores que no existan ya. Una parte del problema es como determinar la precedencia, y otra parte es la falta de necesidad a costa del problema inherente.

  5. No puede cambiar las reglas de precedencia. Son lo suficientemente difíciles de recordar como son sin dejar a la gente jugar con ellas.