http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50075
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-invalid-code Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2011-08-13 AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org |gnu.org | Target Milestone|--- |4.7.0 Ever Confirmed|0 |1 --- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> 2011-08-13 22:00:34 UTC --- The problem is the recursion: template <typename T> auto make_array(const std::initializer_list<T> & il) -> decltype(make_array(il)) You're declaring make_array to have the same return type as itself. 4.6 happily goes down the rabbit hole until it runs out of stack. 4.7 complains and then crashes for another reason, which I will fix.