https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22238
--- Comment #20 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to David Malcolm from comment #19) > Is it time to close this one out as fixed? with gcc HEAD 6.0.0 20160127 and the testcase in comment #12, I get: prog.cc: In member function 'void B::bar()': prog.cc:8:25: error: could not convert '(((A*)this) + ((sizetype)(*(long int*)(((B*)this)->B::_vptr.B + 18446744073709551592u))))->A::foo()' from 'void' to 'bool' void bar() { if (foo()) ; } ~~~^~ Clang: prog.cc:8:22: error: value of type 'void' is not contextually convertible to 'bool' void bar() { if (foo()) ; } ^~~~~ I maintain my opinion that any user-facing diagnostic using %qE is potentially broken.