https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65815

            Bug ID: 65815
           Summary: std::array initialization with initializer list: a =
                    {x,y,z} incorrectly flagged as syntax error
           Product: gcc
           Version: 4.9.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andras.aszodi at csf dot ac.at

On Page 975 of "The C++ Programming Language", 4th edition, Bjarne Stroustrup
says:

"An array can be initialized by an initializer list:
array<int,3> a1 = { 1, 2, 3 };"

and Clang (V 3.5) accepts it. However, G++ 4.9.2 thinks this is an error:

"error: array must be initialized with a brace-enclosed initializer
     const std::array<double, 3> _ar0val = {1.0, -1.0, 1.0};"

The ugly fix is:

#ifdef __GNUC__
    const std::array<double, 3> _ar0val{{1.0, -1.0, 1.0}};
#else
    const std::array<double, 3> _ar0val = {1.0, -1.0, 1.0};
#endif

but of course it is still a bug.

Reply via email to