#include <iostream>
#include <vector>
#include <numeric>

template<typename T>
class Cart {
  private:
   std::vector<T> items;
 
  public:
   Cart(const std::vector<T>& v): items(v) { }
 
   std::vector<T>& getItems() { return items; }
   const std::vector<T>& getItems() const { return items; }
   int total() const { return std::accumulate(items.begin(), items.end(), 0); }
 };
 
int main() {
	std::vector<unsigned int> contents;
	Cart<unsigned int> cart(contents);
	
	std::cout << "Initial total " + std::to_string(cart.total()) << std::endl;
	
	cart.getItems().push_back(10);
	cart.getItems().push_back(11);
	cart.getItems().push_back(21);
	
	std::cout << "New total:    " + std::to_string(cart.total()) << std::endl;
	return 0;
}