¿Hay problemas de comprensión/mantenibilidad que resultan de código como¿Es este un uso razonable del operador ternario?
inVar1 == 0 ? NULL : v.push_back(inVar1);
inVar2 == 0 ? NULL : v.push_back(inVar2);
y así sucesivamente.
La idea posiblemente confusa es usar el operador ternario para el flujo del programa en lugar de la asignación de variables, que es la explicación habitual.
No he visto normas de codificación en el trabajo que aborden este uso, así que mientras me siento cómodo haciendo esto me gustaría saber si hay una buena razón para no hacerlo.
y tenga en cuenta que su cosa es incluso incorrecta en C++. si un operando es nulo, entonces el otro tiene que ser también, o tiene que tirar: inVar1 == 0? (void) NULL: v.push_back (inVar1); simplemente use un simple si :) –
Tengo que estar en desacuerdo con "incorrecto" - VisualStudio 2003 y 2005 lo permiten. ¿Quizás podamos debatir qué significa "incorrecto" ...? – user63572
incorrecto significa cuando su código no es válido C++, por supuesto. una rama tiene tipo void y otra tiene tipo int, long o algo así. eso no es válido vacío y mordisco int. tal vez vC++ tiene una extensión que permite esto, no sé. –