https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79184
Bug ID: 79184 Summary: -Wint-in-bool-context triggered erroneously in template parameter Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jagerman at jagerman dot com Target Milestone: --- When compiling the following with -Wint-in-bool-context under a recent snapshot of g++-7: template <bool> void f(int) {} template <int> void f() {} int main() { f<1*1>(); } `g++ -Wint-in-bool-context t.cpp' produces the warning: t.cpp: In function 'int main()': t.cpp:5:8: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context] f<1*1>(); ~^~ But this is wrong: the template parameter here is int, not a bool, and is not in bool context. The existence of the templated overload, despite not being called in this context, appears to be falsely triggering the warning.