fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename Arg0, typename ... Args>
  5. struct foo_variadic2 {};
  6.  
  7. template <template <class...> class TT, class... Args>
  8. void f(const TT<Args...>&)
  9. {
  10. cout << __PRETTY_FUNCTION__ << endl;
  11. }
  12.  
  13. int main()
  14. {
  15. f(foo_variadic2<int>{});
  16. f(foo_variadic2<int, double>{});
  17.  
  18. // doesn't compile
  19. // f<foo_variadic2>(foo_variadic2<int>{});
  20. // f<foo_variadic2, int>(foo_variadic2<int>{});
  21.  
  22. // gives a different error message
  23. // f<foo_variadic2, int, double>(foo_variadic2<int, double>{});
  24. }
  25.  
  26.  
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
void f(const TT<Args ...>&) [with TT = foo_variadic2; Args = {int}]
void f(const TT<Args ...>&) [with TT = foo_variadic2; Args = {int, double}]