Estoy pensando en reemplazar todas las instancias de idioma de bool seguro por explicit operator bool
en código que ya utiliza características C++ 11 (por lo que el hecho de que los compiladores anteriores no reconocen conversión explícita los operadores no importarán), así que me gustaría saber si puede causar algunos problemas sutiles.Incompatibilidades entre idioma bool seguro y operador explícito bool
Por lo tanto, ¿cuáles son todas las posibles incompatibilidades (incluso los más mínimos) que pueden ser causados por el cambio de idioma bool segura de edad y sin brillo a la nueva y brillante explicit operator bool
?
EDIT: Sé que la conmutación es una buena idea de todos modos, ya que esta última es una característica de idioma, bien entendida por el compilador, por lo que no va a funcionar peor de lo que en realidad es un truco. Simplemente quiero saber las posibles diferencias.
Por supuesto que tienes razón. Pero hay una razón por la que etiqueté esto con 'language-lawyer'. Me gustaría obtener hechos puros del estándar en sí, no un consejo sobre buenas prácticas. Tengo que aclarar eso, pero gracias de todos modos. – Fanael
@Fanael: Los estándares, C++ 03 y C++ 11 ambos, no hablan de expresiones idiomáticas de salvo-bool, por lo que no es posible citarlo para respaldar lo que dije. Todo lo que estoy implícito es que C++ 11 ha introducido 'operator bool explícito' para razón (s), y una de las razones, creo, es' explicit operator bool' es ** más seguro ** que el llamado lenguaje seguro-bool. – Nawaz
Pero el estándar habla sobre las cosas que se usan para implementar el modismo Safe-bool. Por lo tanto, aunque el estándar no dice nada acerca de ese idioma en sí mismo, sus garantías exactas están prácticamente implícitas en el documento. – Fanael