prog.cpp:14:13: error: wrong number of template arguments (0, should be at least 1)
struct List<>
^
prog.cpp:5:8: note: provided for ‘template<class HEAD, class ... TAIL> struct List’
struct List
^~~~
prog.cpp: In instantiation of ‘void List<HEAD, TAIL>::f(HEAD, TAIL ...) [with HEAD = char; TAIL = {}]’:
prog.cpp:10:3: recursively required from ‘void List<HEAD, TAIL>::f(HEAD, TAIL ...) [with HEAD = double; TAIL = {char}]’
prog.cpp:10:3: required from ‘void List<HEAD, TAIL>::f(HEAD, TAIL ...) [with HEAD = int; TAIL = {double, char}]’
prog.cpp:22:19: required from here
prog.cpp:9:17: error: wrong number of template arguments (0, should be at least 1)
List<TAIL...> ls;
^~
prog.cpp:5:8: note: provided for ‘template<class HEAD, class ... TAIL> struct List’
struct List
^~~~
prog.cpp:9:17: error: wrong number of template arguments (0, should be at least 1)
List<TAIL...> ls;
^~
prog.cpp:5:8: note: provided for ‘template<class HEAD, class ... TAIL> struct List’
struct List
^~~~