fork download
  1. #include <vector>
  2.  
  3. //Declare Original out so View can use its copy/move constructor
  4. class Original
  5. {
  6. public:
  7. auto columns();
  8. const auto columns() const;
  9. std::vector<int> m;
  10. };
  11.  
  12. //Full declaration/implementation of View
  13. class View
  14. {
  15. public:
  16. View(const Original &that) : m(that) { }
  17. Original m;
  18. };
  19.  
  20. //Now that View's constructors are defined, implement these Original funcs
  21. auto Original::columns() {return View(*this);}
  22. const auto Original::columns() const {return View(*this);} // comment #1
  23.  
  24. int main()
  25. {
  26. Original o1;
  27. const Original o2;
  28. o2.columns(); // comment #2
  29. }
Success #stdin #stdout 0s 4404KB
stdin
Standard input is empty
stdout
Standard output is empty