1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
#include <cstdlib>
#include <iostream>
#include "IntegerSequence.hpp"

void print(const IntegerSequence& is) {
   for (std::size_t i = 0; i < is.length(); ++i) {
      std::cout << " " << is(i);
   }
   std::cout << std::endl;
}

IntegerSequence gen_sequence(IntegerSequence seq, int val) {
   for (int i = 1; i <= val; ++i) {
      seq.add(i);
   }
   return seq;
}

int main() {
   IntegerSequence iseq; // default constructor
   iseq.add(1);
   IntegerSequence iseq2{iseq}; // copy constructor
   iseq2.add(2);
   iseq = iseq2; // regular assignment operator
   std::cout << "iseq: "; print(iseq);
   IntegerSequence iseq3 = gen_sequence(iseq, 3); // move constructor
   std::cout << "iseq3: "; print(iseq3);
   IntegerSequence iseq4;
   iseq4 = gen_sequence(iseq, 3); // move assignment
   std::cout << "iseq4: "; print(iseq4);
}