fork(1) download
  1. #include <cmath>
  2. #include <iostream>
  3.  
  4. struct dummy;
  5.  
  6. struct Int
  7. {
  8. int i;
  9. Int() : i(0) {}
  10. Int(const int& i) : i(i) {}
  11.  
  12. dummy operator*();
  13. };
  14.  
  15. struct dummy
  16. {
  17. Int* p;
  18. dummy(Int* const p) : p(p) {}
  19.  
  20. int& operator*()
  21. {
  22. return p->i;
  23. }
  24. };
  25.  
  26. dummy Int::operator*()
  27. {
  28. return dummy(this);
  29. }
  30.  
  31.  
  32.  
  33. int operator*(const Int& lhs, const dummy& rhs)
  34. {
  35. return std::pow(lhs.i, rhs.p->i);
  36. }
  37.  
  38.  
  39. int main() {
  40. Int a(2);
  41. Int b(2);
  42. std::cout<< a ** b << std::endl;
  43. }
  44.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
4