fork download
  1. #include <functional>
  2.  
  3. struct C {
  4. int F(int, char) { return 0; }
  5. };
  6.  
  7. template<typename S>
  8. struct delete_class;
  9.  
  10. template<typename R, typename C, typename... Ts>
  11. struct delete_class<R (C::*)(Ts...)>
  12. {
  13. typedef R(type)(Ts...);
  14. };
  15.  
  16. int main()
  17. {
  18. static_assert(
  19. std::is_same<delete_class<decltype(&C::F)>::type,
  20. int(int, char)
  21. >::value, "!");
  22.  
  23. using namespace std::placeholders;
  24.  
  25. std::function<delete_class<decltype(&C::F)>::type> f;
  26. C c;
  27. f = std::bind(&C::F, &c, _1, _2);
  28. }
  29.  
Success #stdin #stdout 0s 3024KB
stdin
Standard input is empty
stdout
Standard output is empty