http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39658
Meador Inge <meadori at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |meadori at gmail dot com --- Comment #1 from Meador Inge <meadori at gmail dot com> 2011-11-15 18:35:55 UTC --- The example case really only is passing 3 arguments. A comma is missing in between 'found_sign' and 'found_endian' on the specialization. Also, this has nothing to do with variadic templates. You can see the same error like: [meadori@motherbrain gnu]$ cat repros/pr39658.cpp template <bool a, bool b, bool c> struct T {}; template <bool b, bool c> struct T<true, b c> {}; [meadori@motherbrain gnu]$ ./install/bin/g++ -std=c++11 -c repros/pr39658.cpp repros/pr39658.cpp:5:19: error: wrong number of template arguments (2, should be 3) repros/pr39658.cpp:2:8: error: provided for ‘template<bool a, bool b, bool c> struct T’