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.