fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<class T>
  5. class A{T t;};
  6.  
  7. template<class T>
  8. void f1(){
  9. std::cout << "i take one template argument" << std::endl;
  10. }
  11. template<template<class T>class Y>
  12. void f2(){
  13. std::cout << "i take one template argument which is template" << std::endl;
  14. }
  15.  
  16. int main() {
  17. // your code goes here
  18. f1<int>(); //ok
  19. f1<A<int>>(); //ok
  20. f2<A>(); //ok
  21. f2<A<int>>();//error
  22. f1<A>(); //error
  23. return 0;
  24. }
Compilation error #stdin compilation error #stdout 0s 15240KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:22:13: error: no matching function for call to ‘f2()’
  f2<A<int>>();//error
             ^
prog.cpp:13:6: note: candidate: template<template<class T> class Y> void f2()
 void f2(){
      ^~
prog.cpp:13:6: note:   template argument deduction/substitution failed:
prog.cpp:23:8: error: no matching function for call to ‘f1()’
  f1<A>();    //error
        ^
prog.cpp:9:6: note: candidate: template<class T> void f1()
 void f1(){
      ^~
prog.cpp:9:6: note:   template argument deduction/substitution failed:
stdout
Standard output is empty