#include <iostream>
#include <vector>
#include <numeric>
class hoge {
public:
int *a;
int size;
hoge(int a[], int size) : a(a), size(size) {}
int sum() {
int s = 0;
for (int i = 0; i < size; i++)
s += a[i];
return s;
}
};
template <class T>
class hoge2 {
const std::vector<T>& a;
public:
hoge2(const std::vector<T>& v) : a(v) {}
int sum() {
return std::accumulate(std::begin(a), std::end(a), 0);
}
};
int main()
{
std::vector<int> a = { 1, 2, 3 };
std::vector<int> a2 = a;
hoge huga(&a2[0], a.size());
std::cout << huga.sum() << std::endl;
a2.push_back(4);
std::cout << huga.sum() << std::endl;
a2 = a;
hoge2<int> huga2(a2);
std::cout << huga2.sum() << std::endl;
a2.push_back(4);
std::cout << huga2.sum() << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bnVtZXJpYz4KCmNsYXNzIGhvZ2UgewpwdWJsaWM6CiAgaW50ICphOwogIGludCBzaXplOwogIGhvZ2UoaW50IGFbXSwgaW50IHNpemUpIDogYShhKSwgc2l6ZShzaXplKSB7fQogIGludCBzdW0oKSB7CiAgICBpbnQgcyA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKICAgICAgcyArPSBhW2ldOwogICAgcmV0dXJuIHM7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIGhvZ2UyIHsKICBjb25zdCBzdGQ6OnZlY3RvcjxUPiYgYTsKcHVibGljOgogIGhvZ2UyKGNvbnN0IHN0ZDo6dmVjdG9yPFQ+JiB2KSA6IGEodikge30KICBpbnQgc3VtKCkgewogICAgcmV0dXJuIHN0ZDo6YWNjdW11bGF0ZShzdGQ6OmJlZ2luKGEpLCBzdGQ6OmVuZChhKSwgMCk7CiAgfQp9OwoKaW50IG1haW4oKQp7CiAgc3RkOjp2ZWN0b3I8aW50PiBhID0geyAxLCAyLCAzIH07CiAgc3RkOjp2ZWN0b3I8aW50PiBhMiA9IGE7CgogIGhvZ2UgaHVnYSgmYTJbMF0sIGEuc2l6ZSgpKTsKICBzdGQ6OmNvdXQgPDwgaHVnYS5zdW0oKSA8PCBzdGQ6OmVuZGw7CiAgYTIucHVzaF9iYWNrKDQpOwogIHN0ZDo6Y291dCA8PCBodWdhLnN1bSgpIDw8IHN0ZDo6ZW5kbDsKCiAgYTIgPSBhOwoKICBob2dlMjxpbnQ+IGh1Z2EyKGEyKTsKICBzdGQ6OmNvdXQgPDwgaHVnYTIuc3VtKCkgPDwgc3RkOjplbmRsOwogIGEyLnB1c2hfYmFjayg0KTsKICBzdGQ6OmNvdXQgPDwgaHVnYTIuc3VtKCkgPDwgc3RkOjplbmRsOwp9Cg==