https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55986
--- Comment #5 from Shafik Yaghmour <yaghmour.shafik at gmail dot com> --- It looks like this case from this Stackoverflow question http://stackoverflow.com/q/32920229/1708801 is possibly related: int main(int argc, char**) { constexpr int a = argc * 0; } gcc treats `argc * 0` as a constant expression a comment indicates this is due to constant folding and it seems possible that gcc is constant folding `i || true` as well.