Proposed resolution (October, 2015): Change 9.3.4.5 [dcl.array] paragraph 3 as follows:
...An array bound may also be omitted when the declarator is followed by an
initializer (9.5 [dcl.init]) or when a declarator for
a static data member is followed by a brace-or-equal-initializer
(11.4 [class.mem]). In
this case both
cases the bound is calculated from the number of initial elements...
[Adopted at the February, 2016 meeting.] According to 9.3.4.5 [dcl.array] paragraph 3, However, the grammar for member-declarator uses
brace-or-equal-initializer, not initializer, so
the following is ill-formed:
An array bound may also be omitted when the declarator is
followed by an initializer (9.5 [dcl.init]). In
this case the bound is calculated from the number of initial
elements...
struct X {
static constexpr int arr[] = { 1, 2, 3 };
};