fork download
  1. #include <iostream>
  2. #include <functional> //Required for std::function.
  3.  
  4. //Not directly related to the problem.
  5. //void myFunc(char seperator)
  6. //{
  7. // std::cout << "char overload" << std::endl;
  8. //}
  9.  
  10. struct Callback
  11. {
  12. Callback(bool (&func)(char)): m_func(func)
  13. {}
  14.  
  15. bool operator()(char c) { return m_func(c); }
  16.  
  17. bool (&m_func)(char);
  18. };
  19.  
  20. void myFunc(Callback seperatorFunc)
  21. {
  22. std::cout << "Callback overload" << std::endl;
  23. }
  24.  
  25. void myFunc(const std::string &separator)
  26. {
  27. std::cout << "std::string overload" << std::endl;
  28. }
  29.  
  30. bool testCallback(char)
  31. {
  32. return true;
  33. }
  34.  
  35. int main()
  36. {
  37. myFunc("String literal");
  38. myFunc(std::string("std::string"));
  39. //myFunc('c');
  40. myFunc(testCallback);
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
std::string overload
std::string overload
Callback overload