https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114580
Bug ID: 114580 Summary: Bogus warning on if constexpr Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- #include <type_traits> template <typename T> void foo () { if constexpr ((T) std::is_constant_evaluated ()) ; } void bar () { foo <bool> (); } emits bogus warning with -std=c++17 -Wall. Once it (incorrectly) warns about warning: ‘std::is_constant_evaluated’ always evaluates to false in a non-‘constexpr’ function [-Wtautological-compare] and once it correctly warns about warning: ‘std::is_constant_evaluated’ always evaluates to true in ‘if constexpr’ [-Wtautological-compare] on the same line. In reality, std::is_constant_evaluated () here always evaluates to true, never to false.