http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49205
--- Comment #7 from Johannes Schaub <schaub.johannes at googlemail dot com> 2011-06-20 15:56:42 UTC --- (In reply to comment #6) > (In reply to comment #1) > > While this behavior is erroneous, consensus at clang was that WG21 made an > > oversight in allowing this. Template constructors are banned from being > > copy or > > move constructors, and historically this prohibition was not necessary for > > default constructors since there was no special handling of them except when > > implicit. > > I disagree with this. As Johannes points out, it is possible to have a > template default constructor in C++03, so changing this would be a significant > change. We should just treat the variadic template as a default constructor. To be fair to Sean, I should note that my example relied on a C++0x feature. If we remove the template default argument: template<typename T> A(T = 0); This constructor cannot really be called "with arguments" anymore (there's no deduction from default arguments), which is the condition under which a constructor becomes a default constructor.