http://llvm.org/bugs/show_bug.cgi?id=14304
Bug #: 14304
Summary: -Winvalid-constexpr fails to warn on non-const array
used in constexpr function
Product: clang
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: C++11
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected], [email protected]
Classification: Unclassified
cat >test.cc <<EOF
extern int global_array[1];
constexpr int true_positive(int i) {
return global_array[0];
}
constexpr int false_negative(int i) {
return global_array[i];
}
EOF
clang -std=c++11 -c test.cc
Clang gives the correct diagnostic ("constexpr function never produces a
constant expression") for "true_positive", but silently accepts
"false_negative".
The Standard says "the program is ill-formed; no diagnostic required"
(dcl.constexpr#5), but clearly Clang is making an effort to diagnose the issue
and is failing. So I'm calling this a bug, even though technically (per
dcl.constexpr#5) it's just a quality-of-implementation issue, i.e. an
enhancement request.
(Personally, I'd like to see Clang diagnose any constexpr function that is
*ever* uncomputable at compile time. I don't have a ton of experience with
constexpr yet, but I see huge disadvantages to permitting "non-const constexpr"
functions — and no correspondingly huge advantages — no matter what the
Standard says on the topic.)
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs