http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57947
--- Comment #2 from Craig Schroeder <cas43 at cs dot stanford.edu> --- Unfortunately that is because I tried cleaning up the test case some more after reducing it down. How about this: namespace std { template <class _E> class initializer_list {}; template <int N> struct D {D(std::initializer_list<int>) {}}; D<0> d{1, 2, 3}; }