#include <iostream>
#include <vector>
class foo {
public:
int m_data;
foo(int data) : m_data(data) {
std::cout << "parameterised constructor" << std::endl;
}
foo(const foo &other) : m_data(other.m_data) {
std::cout << "copy constructor" << std::endl;
}
foo &operator=(const foo &rhs) {
m_data = rhs.m_data;
std::cout << "copy assignment" << std::endl;
}
};
main (int argc, char *argv[]) {
std::vector<foo> a(3, foo(3));
//std::vector<foo> b(4, foo(4));
std::vector<foo> b(3, foo(4));
std::cout << "a = b" << std::endl;
a = b;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgZm9vIHsKcHVibGljOgogICAgaW50IG1fZGF0YTsKICAgIGZvbyhpbnQgZGF0YSkgOiBtX2RhdGEoZGF0YSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAicGFyYW1ldGVyaXNlZCBjb25zdHJ1Y3RvciIgPDwgc3RkOjplbmRsOwogICAgfQogICAgZm9vKGNvbnN0IGZvbyAmb3RoZXIpIDogbV9kYXRhKG90aGVyLm1fZGF0YSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiY29weSBjb25zdHJ1Y3RvciIgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIGZvbyAmb3BlcmF0b3I9KGNvbnN0IGZvbyAmcmhzKSB7CiAgICAgICAgbV9kYXRhID0gcmhzLm1fZGF0YTsKCXN0ZDo6Y291dCA8PCAiY29weSBhc3NpZ25tZW50IiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgptYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiAgICBzdGQ6OnZlY3Rvcjxmb28+IGEoMywgZm9vKDMpKTsKICAgIC8vc3RkOjp2ZWN0b3I8Zm9vPiBiKDQsIGZvbyg0KSk7CiAgICBzdGQ6OnZlY3Rvcjxmb28+IGIoMywgZm9vKDQpKTsKICAgIHN0ZDo6Y291dCA8PCAiYSA9IGIiIDw8IHN0ZDo6ZW5kbDsKICAgIGEgPSBiOwogICAgcmV0dXJuIDA7Cn0=