Guest User

Untitled

a guest
Nov 14th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. template<class T, class U>
  2. struct is_same {
  3. static const bool result = false;
  4. };
  5.  
  6. template<class T>
  7. struct is_same<T, T> {
  8. static const bool result = true;
  9. };
  10.  
  11. template<class ToFind, class Ret, class T, class Arg>
  12. bool hasArg1(ToFind, Ret (T::*)(Arg)){return is_same<ToFind, Arg>::result;}
  13.  
  14. template<class ToFind, class Ret, class T, class Arg1, class Arg2>
  15. bool hasArg1(ToFind, Ret (T::*)(Arg1, Arg2)){return is_same<ToFind, Arg1>::result;}
  16.  
  17. struct A
  18. {
  19. int fun1(int a){return a+1;}
  20. };
  21.  
  22. printf("int arg1: %sn", hasArg1(1, &A::fun1) ? "yes" : "no");
  23.  
  24. hasArg1<int>(&A::fun1)
  25.  
  26. hasArg1(1, &A::fun1)
  27.  
  28. template<class ToFind, class Ret, class T, class Arg>
  29. bool hasArg1(Ret (T::*)(Arg)){return is_same<ToFind, Arg>::result;}
  30.  
  31. template<class ToFind, class Ret, class T, class Arg1, class Arg2>
  32. bool hasArg1(Ret (T::*)(Arg1, Arg2)){return is_same<ToFind, Arg1>::result;}
Add Comment
Please, Sign In to add comment