https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88572
--- Comment #1 from Will Wray <wjwray at gmail dot com> --- This bug is straightforward to confirm. Compile this snippet (-std=c++11 / 14 / 17 / 2a): struct S { int i; }; S s{{0}}; Gives error: braces around scalar initializer for type 'int' Should be a warning (Or, follow the provided compiler explorer link to the test code which includes two more failing cases - array and array member.) The standard is clear that scalar brace init should be accepted: C++14 [dcl.init.aggr]/2 says: "Each member is copy-initialized from the corresponding initializer-clause. [...] [ Note: If an initializer-clause is itself an initializer list, the member is list-initialized, which will result in a recursive application of the rules in this section if the member is an aggregate. — end note ]" C++14 [dcl.init.list]/3.5: "Otherwise, if the initializer list has a single element of type E and either T is not a reference type or its referenced type is reference-related to E, the object or reference is initialized from that element;" Some historical links leading up to the wording fixes: DR 155. Brace initializer for scalar Explains it was a C/C++ incompatibility pre-11 and points to: DR 632. Brace-enclosed initializer for scalar member of aggregate http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#632 "The initializer-list proposal will resolve this issue..." As stated, it was resolved in C++11 by Initializer Lists: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm 1501. Nested braces in list-initialization http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1501 DR1467 List-initialization of aggregate from same-type object http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1467 Submitter: Jason Merrill Date: 2012-02-06 [Moved to DR at the November, 2014 meeting.] Please CONFIRM this bug.