fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <unsigned n> class row_base {
  6. public: int data[n];
  7. };
  8.  
  9. template <unsigned n, unsigned s> class row_exts : public row_base<s> {
  10. };
  11.  
  12. template <unsigned s> class row_exts <1,s> : public row_base<s> {
  13. public: int &x(void) {
  14. return this->data[0];
  15. }
  16. };
  17.  
  18. template <unsigned s> class row_exts <2,s> : public row_exts<1,s> {
  19. public: int &y(void) {
  20. return this->data[1];
  21. }
  22. };
  23.  
  24. template <unsigned n> class row : public row_exts<n,n> {};
  25.  
  26. int main() {
  27. row <2> a;
  28.  
  29. a.x() = 42;
  30. a.y() = -1;
  31. cout << a.x() << ' ' << a.y();
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
42 -1