http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59311
--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> --- A small testcase compiled with -std=c++1y -m32: -- namespace std { typedef long unsigned int size_t; } namespace std { template<class _E> class initializer_list { public: typedef size_t size_type; typedef const _E* iterator; typedef const _E* const_iterator; private: iterator _M_array; size_type _M_len; constexpr initializer_list(const_iterator __a, size_type __l) : _M_array(__a), _M_len(__l) { } }; } struct A { int i; A(std::initializer_list<int>) { } A(int i): i{i} { } }; int x = 4; int main(int argc, char **argv) { { int i[x] = { 42, 42, 42, 42 }; } { A a[x] = { argc }; if (a[1].i != 42) __builtin_abort (); } } ---