https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100995
Bug ID: 100995 Summary: Extend std::is_constant_evaluated in if warning Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- Let's extend the existing warning to detect more cases, as in http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1938r3.html#compiler-warnings constexpr int f1() { if constexpr (!std::is_constant_evaluated() && sizeof(int) == 4) { // warning: always true return 0; } if (std::is_constant_evaluated()) { return 42; } else { if constexpr (std::is_constant_evaluated()) { // warning: always true return 0; } } return 7; } consteval int f2() { if (std::is_constant_evaluated() && f1()) { // warning: always true return 42; } return 7; } int f3() { if (std::is_constant_evaluated() && f1()) { // warning: always false return 42; } return 7; }