Am 07.08.2011, 06:31 Uhr, schrieb Adam D. Ruppe
<[email protected]>:
bearophile:
I agree, that's why I have added two more points
The precedence of the ternary is pretty easy to handle - if there's
more than one thing in there, just use parenthesis. That's the
only thing I can think of that would make it any more bug prone
than other branches.
Perhaps it'd be worth thinking if parens should be required in any
non-trivial cases.
auto a = something ? "one" : "two"; // ok
auto b = a ~ something ? "one" : "two"; // error, please add parens for
clarity
- It is less maintainable
I don't agree that changing to an if is any burden at all. This
is like saying "if(x) y;" is unacceptable because you might have
to add braces later.
Real maintenance headaches are things like duplicated code
or unnecessary complexity. This is just a very simple case of
syntax translation.
The anonymous function solution looks good to me. You have full
flexibility while keeping the variable const and the initialization code
is at the declaration site.