On Wed, May 23, 2012 at 9:53 AM, Borislav Petkov <bp@xxxxxxxxx> wrote: > > How about the following completely untested chunk: No, you can't do that. All standard C operations will return *one* type. That very much includes the ternary ?: operator. The *only* ways I know of to get two types are - C preprocessor stuff, ie #define BIT(x) __BIT_##x and then just enumerate all the 64 cases. This is portable, but it gets old. - using __builtin_choose_expr(), which actually allows the two expressions to have different types, but requires a very strict compile-time constant (ie you cannot rely on the optimizer making it a constant - because it needs to choose the expression before the optimizer runs) There might be some other magic gcc extension, of course. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html