fork download
  1. #include <iostream>
  2.  
  3. struct Tester {
  4. template <typename T, typename FT>
  5. void operator()( const FT & (T::*ptr)() const ) const
  6. {
  7. std::cout << "const exists" << std::endl;
  8. }
  9.  
  10. template <typename T, typename FT>
  11. void operator()( FT & (T::*ptr)() )
  12. {
  13. std::cout << "non-const exists" << std::endl;
  14. }
  15. };
  16.  
  17.  
  18. struct A {
  19. const double & a() const { return a_; }
  20. double & a() { return a_; }
  21.  
  22. private:
  23. double a_;
  24. };
  25.  
  26. struct B {
  27. const double & b() const { return b_; }
  28.  
  29. private:
  30. double b_;
  31. };
  32.  
  33.  
  34.  
  35. int main( int argc, char **argv )
  36. {
  37. Tester t;
  38. t(&A::a);
  39. t(&B::b);
  40.  
  41. return 0;
  42. }
Success #stdin #stdout 0.02s 2724KB
stdin
Standard input is empty
stdout
non-const exists
const exists