fork(1) download
  1. #include <iostream>
  2.  
  3. template<typename T>
  4. struct Bar
  5. {
  6. typedef void (T::*F)();
  7.  
  8. Bar( T& t_ , F f ) : t( t_ ) , func( f )
  9. {
  10. }
  11.  
  12. void operator()()
  13. {
  14. (t.*func)();
  15. }
  16.  
  17. F func;
  18. T& t;
  19. };
  20.  
  21. template<typename T>
  22. class Foo
  23. {
  24. private:
  25. void foo()
  26. {
  27. std::cout << "Foo<T>::foo()" << std::endl;
  28. }
  29.  
  30. public:
  31. Foo() : bar( *this , &Foo::foo )
  32. {
  33. bar();
  34. }
  35.  
  36. Bar<Foo<T> > bar;
  37. };
  38.  
  39. int main()
  40. {
  41. Foo<int> foo;
  42. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Foo<T>::foo()