http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56614
--- Comment #2 from Paolo Carlini <paolo.carlini at oracle dot com> 2013-03-13 17:29:02 UTC --- A few details can be removed from the testcase: #include <initializer_list> struct vector { vector(std::initializer_list<int>); }; void func(); struct C { template<typename T> C(T, vector = vector({})); }; C c(func);