fork download
  1. #include <iostream>
  2.  
  3. class B {
  4. protected:
  5. const int a_;
  6. int b_;
  7. B (int b, int a) : a_(a), b_(b) {}
  8. public:
  9. operator bool () const { return b_ == a_; }
  10. };
  11.  
  12. class D1 : public B {
  13. public:
  14. D1 (int b = 0, int a = 0) : B(b, a) {}
  15. operator int () const { return b_; }
  16. };
  17.  
  18. class D2 : public B {
  19. public:
  20. D2 (int b = 0, int a = 0) : B(b, a) {}
  21. operator const int & () const { return b_; }
  22. };
  23.  
  24. int main () {
  25. if (const D1 d1a = D1('a', 'a')) std::cout << "d1a\n";
  26. if (const D1 d1b = D1('b', 'a')) std::cout << "d1b\n";
  27. if (const D2 d2a = D2('a', 'a')) std::cout << "d2a\n";
  28. if (const D2 d2b = D2('b', 'a')) std::cout << "d2b\n";
  29. return 0;
  30. }
Success #stdin #stdout 0s 2896KB
stdin
Standard input is empty
stdout
d1a
d2a