Mark Mitchell writes: > What do people think? Do we have the leeway to change this?
If it were just cases where using __builtin_expect is pointless that would break, like function overloading and sizeof then I don't think it would be a problem. However, it would change behaviour when C++ conversion operators are used and I can see these being legitimately used with __builtin_expect. Something like: struct C { operator long(); }; int foo() { if (__builtin_expect(C(), 0)) return 1; return 2; } If cases like these are rare enough it's probably an acceptable change if they give an error because the argument types don't match. Ross Ridge