http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57765
trashyankes at wp dot pl changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |trashyankes at wp dot pl --- Comment #1 from trashyankes at wp dot pl --- In version of C++0x standard I have (not final, 2011-02-28 N3225) section 14.1 paragraph 11: "If a template-parameter of a class template has a default template-argument, each subsequent template-parameter shall either have a default template-argument supplied or be a template parameter pack. If a template-parameter of a primary class template is a template parameter pack, it shall be the last template-parameter. [ Note: These are not requirements for function templates or class template partial specializations because template arguments can be deduced (...) — end note ]" If this is not changed then first example is valid and second isnt because you cant deduced value of `int`.