Pregunta

Como dice la pregunta, ¿hay alguna razón por la que las personas usen la versión de estructura sobre los condicionales normales?

¿Fue útil?

Solución

Un extracto de las Pautas de codificación de impulso para expresiones constantes integrales :

No use operadores lógicos en expresiones constantes integrales; use metaprogramación de plantilla en su lugar.

El encabezado contiene una serie de plantillas de solución alternativa, que cumplen la función de operadores lógicos, por ejemplo, en lugar de:

INTEGRAL_CONSTANT1 || INTEGRAL_CONSTANT2

Uso:

::boost::type_traits::ice_or<INTEGRAL_CONSTANT1,INTEGRAL_CONSTANT2>::value

Justificación: varios compiladores (en particular los compiladores de Borland y Microsoft) tienden a no reconocer las expresiones constantes integrales que involucran operadores lógicos como expresiones constantes integrales genuinas. El problema generalmente solo aparece cuando la expresión constante integral está anidada en el interior del código de la plantilla y es difícil de reproducir y diagnosticar.

Entonces, diría que nunca en un compilador compatible. (Pero si necesita admitir compiladores no compatibles, utilícelo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top