[Bug c++/100995] New: Extend std::is_constant_evaluated in if warning
mpolacek at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jun 9 15:08:43 GMT 2021
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;
}
More information about the Gcc-bugs
mailing list