http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56567
--- Comment #5 from Jason Merrill <jason at gcc dot gnu.org> 2013-03-11 03:21:52 UTC --- (In reply to comment #4) > It's certainly legal to compile a function returning an std::initializer list, > which is never called. So this fix is problematic. For example > > []{ return std::initializer_list< int >{ 1, 2 }; }(); That's a good point, though returning an initializer_list value is completely useless; since the underlying array is local to the returning function, any use of the returned value would cause undefined behavior, just like returning a reference to a local variable.