On Mon, Jan 09, 2017 at 08:49:25AM -0500, Nathan Sidwell wrote: > On 01/08/2017 01:34 AM, Jason Merrill wrote: > > P0292 defines the notion of "discarded statement" which is almost but > > not quite the same as "unevaluated operand". This PR shows a case > > where we need to be able to tell that we're in a discarded statement > > at a lower level than in the parser, so this patch moves the > > information about being in a discarded statement from the parser into > > saved_scope. I've also added a test for a couple of cases that > > demonstrate why we can't just use cp_unevaluated_context. > > > + if constexpr(sizeof(long long) == sizeof(char*)) > > + ; > > + else > > + sizeof_mismatch<sizeof(long long)>(); > > This is going to behave differently on 32 and 64 bit HW. Is that > intentional? (If so, a comment would be nice)
Yeah, it fails on i686-linux and other ILP32 and similar targets. FAIL: g++.dg/cpp1z/constexpr-if10.C (test for excess errors) Could we do e.g. sed -i -e 's/long long/int */g' testsuite/g++.dg/cpp1z/constexpr-if10.C so that it is something where if constexpr will be always true? Jakub