fork(1) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. class Foo {
  5. //...
  6. public:
  7. static Foo & getInstance() {
  8. static Foo instance;
  9. return instance;
  10. }
  11. template <typename V, typename ...X>
  12. void DoJob (V verify, X... x) {
  13. verify(x...);
  14. }
  15. };
  16.  
  17. struct Vvoid {
  18. void operator () (void) { std::cout << __PRETTY_FUNCTION__ << '\n'; }
  19. };
  20.  
  21. struct Vstring {
  22. void operator () (std::string msg) {
  23. std::cout << __PRETTY_FUNCTION__ << ':' << msg << '\n';
  24. }
  25. };
  26.  
  27. void Vfunction (void) { std::cout << __PRETTY_FUNCTION__ << '\n'; }
  28.  
  29. int main() {
  30. Foo &f = Foo::getInstance();
  31. f.DoJob(Vvoid());
  32. f.DoJob(Vstring(), "msg");
  33. f.DoJob(Vfunction);
  34. return 0;
  35. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
void Vvoid::operator()()
void Vstring::operator()(std::string):msg
void Vfunction()