https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91335
--- Comment #2 from Nathan Ridge <zeratul976 at hotmail dot com> --- I suppose a fair question here is, if I'm not going to use 'f', why don't I just write: if (foo()) { return 1; } ? That would certainly work in this case. However, in the original code example that motivated this report, foo() returned a class type which had a templated conversion operator, and it's the result of that conversion operator (instantiated with a pointer type) that I wanted to test. In such a case, I need the declaration form to trigger invoking the conversion operator.