http://llvm.org/bugs/show_bug.cgi?id=7948
Summary: Explicitly initialized arrays with fewer initializers
than elements don't value initialize remaining
elements
Product: clang
Version: unspecified
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: C++
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected], [email protected]
% cat t.cc
struct S { const int x; };
const S good[2] = { { 42 }, { } };
const S bad[2] = { { 42 } };
% ./bin/clang -fsyntax-only t.cc
t.cc:1:8: error: implicit default constructor for 'S' must explicitly
initialize the const member 'x'
struct S { const int x; };
^
t.cc:1:22: note: declared here
struct S { const int x; };
^
t.cc:4:18: note: implicit default constructor for 'S' first required here
const S bad[2] = { { 42 } };
^
1 error generated.
As far as I can tell 'good' and 'bad' should be initialized exactly the same
way: value initialized. Specifically, C++03 [dcl.init.aggr] 8.5.1/7 says: "If
there are fewer initializers in the list than there are members in the
aggregate, then each member not explicitly initialized shall be
value-initialized (8.5)." It looks like the remaining elements are being
default initialized instead of value initialized.
--
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