En una conjetura, ya que sólo tendría sentido para Bools, que eran tarde a la fiesta
Incluso si Bools habían existido en el inicio de estos operadores serían de uso limitado, ya que sin efectos secundarios serían idénticos a |=
y &=
con operandos booleanos, por lo que el único uso sería atrapar pasando un no bool por accidente.
Si los operadores propuestos son también cortocircuitos (no excesivo como ||
y &&
son para este tipo incorporado), entonces también tiene una justificación adicional para ellos en la presencia de efectos secundarios.
La única otra posible razón que puedo pensar para permitirlos sería si simplificara significativamente el análisis/compilación del lenguaje, sin embargo, probablemente no sea el caso dado que no tienen sentido para los tipos que no son bool.
En última instancia, no están en el idioma porque nadie se ha preocupado lo suficiente como para ponerlos en el idioma, por lo que podemos concluir que ninguna de estas justificaciones es suficiente para justificar el costo de presentar una propuesta, implementando la característica.
¿Cuál sería exactamente el caso de uso para un operador de este tipo? – RedX
Hay _are_ operadores para tal construcción (raramente, si alguna vez, es necesaria). La sintaxis es '| = !!' y '& = !!', respectivamente. Si ese es el código que le gustaría escribir es una pregunta diferente (aunque debo admitir que he utilizado al menos la expresión '!!' unas cuantas veces antes, y la 'probable' macro en las fuentes del kernel de Linux también lo usa). – Damon
@Damon: '| = !!' no es un operador, es una combinación de tres operadores: '| =! ! 'y la alta precedencia de'! 'lleva a problemas si tiene una expresión con menor precedencia, como' + 'en el lado derecho, e. gramo. 'x | = !! 5 + x' le dará 'x | = 1 + x'. – hirschhornsalz