// PR c++/56895 // { dg-do compile } extern struct A { bool foo (); A bar (); } *a; template int baz1 () { return 2 << (a->bar().foo() ? 1 : 0); } template int baz2 () { return 2 >> (a->bar().foo() ? 1 : 0); } template int baz3 () { return 10 / (a->bar().foo() ? 1 : 2); } template int baz4 () { return 10 % (a->bar().foo() ? 1 : 0); } int test () { return baz1<0> () + baz2<0> () + baz3<0> () + baz4<0> (); }