#include <vector>
#include <string>
#include <iostream>
using namespace std;
template<typename T>
struct foo {
vector<T> bar;
};
template<typename T>
void set(foo<T> &foo) {
for (auto &el: foo.bar) {
el = {};
}
}
template<>
void set<int>(foo<int> &foo) {
for (auto &el: foo.bar) {
el = 111;
}
}
template<>
void set<string>(foo<string> &foo) {
for (auto &el: foo.bar) {
el = "dupa";
}
}
template<typename T>
void print(foo<T> const &foo) {
for (auto const &el : foo.bar) {
cout << el << " ";
}
cout << endl;
}
int main() {
foo<int> f1 = { {1, 2, 3} };
foo<double> f2 = { {1.0, 2.0, 3.0} };
foo<string> f3 = { {"ala", "ma", "kota"} };
set(f1);
print(f1);
set(f2);
print(f2);
set(f3);
print(f3);
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBmb28gewoJdmVjdG9yPFQ+IGJhcjsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgc2V0KGZvbzxUPiAmZm9vKSB7Cglmb3IgKGF1dG8gJmVsOiBmb28uYmFyKSB7CgkJZWwgPSB7fTsKCX0KfQoKdGVtcGxhdGU8Pgp2b2lkIHNldDxpbnQ+KGZvbzxpbnQ+ICZmb28pIHsKCWZvciAoYXV0byAmZWw6IGZvby5iYXIpIHsKCQllbCA9IDExMTsKCX0KfQoKdGVtcGxhdGU8Pgp2b2lkIHNldDxzdHJpbmc+KGZvbzxzdHJpbmc+ICZmb28pIHsKCWZvciAoYXV0byAmZWw6IGZvby5iYXIpIHsKCQllbCA9ICJkdXBhIjsKCX0KfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBwcmludChmb288VD4gY29uc3QgJmZvbykgewoJZm9yIChhdXRvIGNvbnN0ICZlbCA6IGZvby5iYXIpIHsKCQljb3V0IDw8IGVsIDw8ICIgIjsKCX0KCWNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7Cglmb288aW50PiBmMSA9IHsgezEsIDIsIDN9IH07Cglmb288ZG91YmxlPiBmMiA9IHsgezEuMCwgMi4wLCAzLjB9IH07Cglmb288c3RyaW5nPiBmMyA9IHsgeyJhbGEiLCAibWEiLCAia290YSJ9IH07CgkKCXNldChmMSk7CglwcmludChmMSk7CgkKCXNldChmMik7CglwcmludChmMik7CgkKCXNldChmMyk7CglwcmludChmMyk7Cn0=