#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bnVtZXJpYz4KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNsYXNzIENhcnQgewogIHByaXZhdGU6CiAgIHN0ZDo6dmVjdG9yPFQ+IGl0ZW1zOwogCiAgcHVibGljOgogICBDYXJ0KGNvbnN0IHN0ZDo6dmVjdG9yPFQ+JiB2KTogaXRlbXModikgeyB9CiAKICAgc3RkOjp2ZWN0b3I8VD4mIGdldEl0ZW1zKCkgeyByZXR1cm4gaXRlbXM7IH0KICAgY29uc3Qgc3RkOjp2ZWN0b3I8VD4mIGdldEl0ZW1zKCkgY29uc3QgeyByZXR1cm4gaXRlbXM7IH0KICAgaW50IHRvdGFsKCkgY29uc3QgeyByZXR1cm4gc3RkOjphY2N1bXVsYXRlKGl0ZW1zLmJlZ2luKCksIGl0ZW1zLmVuZCgpLCAwKTsgfQogfTsKIAppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gY29udGVudHM7CglDYXJ0PHVuc2lnbmVkIGludD4gY2FydChjb250ZW50cyk7CgkKCXN0ZDo6Y291dCA8PCAiSW5pdGlhbCB0b3RhbCAiICsgc3RkOjp0b19zdHJpbmcoY2FydC50b3RhbCgpKSA8PCBzdGQ6OmVuZGw7CgkKCWNhcnQuZ2V0SXRlbXMoKS5wdXNoX2JhY2soMTApOwoJY2FydC5nZXRJdGVtcygpLnB1c2hfYmFjaygxMSk7CgljYXJ0LmdldEl0ZW1zKCkucHVzaF9iYWNrKDIxKTsKCQoJc3RkOjpjb3V0IDw8ICJOZXcgdG90YWw6ICAgICIgKyBzdGQ6OnRvX3N0cmluZyhjYXJ0LnRvdGFsKCkpIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9