Question: I just saw this block of code on the [Wikipedia](http://en.wikipedia.org/wiki/%3F:#.3F:_in_style_guidelines) article on conditional operators:

```
Vehicle new_vehicle = arg == 'B' ? bus      :
                      arg == 'A' ? airplane :
                      arg == 'T' ? train    :
                      arg == 'C' ? car      :
                      arg == 'H' ? horse    :
                      feet;

```

I've changed the code a little, but the idea is the same. Would you find this use of the conditional operator acceptable? It's much more concise than the `if`-`else` construct, and using a switch would definitely open up a whole new set of opportunities for bugs (fall-throughs anyone?). Also, `if`-`else`s and `switch` can't be used as R-values, so you'd have to create the variable first, initialize it and then assign as necessary.

I for one really like this, but I'm wondering what others think.

But the formatting is essential.

EDIT: I still like this. But I understand those who say "the `switch` statement was made for this". OK, maybe so. But what if the conditions are function calls that return `bool`? Or a million other things you can't switch on.

Are you switch lovers really trying to convince me that a huge `if`-`else` chain is better? Yes, programmers who don't know how to use the conditional operator will not understand this. They should learn how to use it. It's not arcane.

Answer: 
I like it. It is similar to an if-else-if ladder, only more concise.
Read the [C++ section of the Wikipedia article](http://en.wikipedia.org/wiki/%3F:#C.2B.2B) a bit more carefully. It explicitly lists some situations where using the `?:` operator is the only option, and can't be replaced by `if/else` or `switch`.

On the other hand, I wouldn't use it only because it looks prettier.