http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52796
--- Comment #1 from Jeffrey Yasskin <jyasskin at gcc dot gnu.org> 2012-03-30 21:18:09 UTC --- Created attachment 27050 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27050 Test file demonstrating improvement from 4.6->4.7 The attached 46_vs_47.cc shows that gcc-4.7 calls the default constructor for pack uses like new Type(args...), while gcc-4.6 didn't. So 4.7 doesn't have the std::list bug. I tested this with valgrind-3.6.0: $ g++-4.6.x --version g++-4.6.x (GCC) 4.6.4 20120330 (prerelease) $ g++-4.6.x -Wall -std=c++0x 46_vs_47.cc -g3 -o test && /usr/bin/valgrind ./test ... ==15840== Conditional jump or move depends on uninitialised value(s) ==15840== at 0x4EB8074: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (locale_facets.tcc:872) ==15840== by 0x4EB8395: std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (locale_facets.h:2475) ==15840== by 0x4EC33CC: std::ostream& std::ostream::_M_insert<long>(long) (locale_facets.h:2336) ==15840== by 0x400BF7: void check_init<>() (46_vs_47.cc:19) ==15840== by 0x400AC1: main (46_vs_47.cc:24) ... 0 3 ==15840== Conditional jump or move depends on uninitialised value(s) ==15840== at 0x4EB8074: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (locale_facets.tcc:872) ==15840== by 0x4EB8395: std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (locale_facets.h:2475) ==15840== by 0x4EC33CC: std::ostream& std::ostream::_M_insert<long>(long) (locale_facets.h:2336) ==15840== by 0x400B03: main (46_vs_47.cc:27) ... 0 $ g++-4.7pre --version g++-4.7pre (GCC) 4.7.1 20120330 (prerelease) $ g++-4.7pre -Wall -std=c++11 test.cc -g3 -o test && /usr/bin/valgrind ./test ==8931== Memcheck, a memory error detector ==8931== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al. ==8931== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==8931== Command: ./test ==8931== 0 3 0