#include <iostream>
#include <string>
#include <vector>
struct S {
std::string s_;
static std::vector<S> tiles;
S() { std::cout << "S()\n"; init("default"); }
S(const std::string& s) {
std::cout << "S(" << (void*) this << " with " << s << ")\n";
init(s);
}
S(const S& rhs) {
std::cout << (void*) this << " copying " << (void*)&rhs << " (" << rhs.s_ << ")\n";
s_ = rhs.s_;
s_ += " copy";
}
void init(const std::string& s) {
s_ = s;
std::cout << "init " << (void*)this << " " << s_ << "\n";
tiles.push_back(*this); // makes copy
}
};
std::vector<S> S::tiles = std::vector<S>(3);
int main() {
for (const auto& el : S::tiles) {
std::cout << el.s_ << "\n";
}
}
CSNpbmNsdWRlIDxpb3N0cmVhbT4KCSNpbmNsdWRlIDxzdHJpbmc+CgkjaW5jbHVkZSA8dmVjdG9yPgoJCglzdHJ1Y3QgUyB7CgkJc3RkOjpzdHJpbmcgc187CgkJc3RhdGljIHN0ZDo6dmVjdG9yPFM+IHRpbGVzOwoJCQoJCVMoKSB7IHN0ZDo6Y291dCA8PCAiUygpXG4iOyBpbml0KCJkZWZhdWx0Iik7IH0KCQlTKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSB7CgkJCXN0ZDo6Y291dCA8PCAiUygiIDw8ICh2b2lkKikgdGhpcyA8PCAiIHdpdGggIiA8PCBzIDw8ICIpXG4iOwoJCQlpbml0KHMpOwoJCX0KCQlTKGNvbnN0IFMmIHJocykgewoJCQlzdGQ6OmNvdXQgPDwgKHZvaWQqKSB0aGlzIDw8ICIgY29weWluZyAiIDw8ICh2b2lkKikmcmhzIDw8ICIgKCIgPDwgcmhzLnNfIDw8ICIpXG4iOwoJCQlzXyA9IHJocy5zXzsKCQkJc18gKz0gIiBjb3B5IjsKCQl9CgkKCQl2b2lkIGluaXQoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIHsKCQkJc18gPSBzOwoJCQlzdGQ6OmNvdXQgPDwgImluaXQgIiA8PCAodm9pZCopdGhpcyA8PCAiICIgPDwgc18gPDwgIlxuIjsKCQkJdGlsZXMucHVzaF9iYWNrKCp0aGlzKTsgIC8vIG1ha2VzIGNvcHkKCQl9Cgl9OwoJCgkKCXN0ZDo6dmVjdG9yPFM+IFM6OnRpbGVzID0gc3RkOjp2ZWN0b3I8Uz4oMyk7CgkKCWludCBtYWluKCkgewoJCWZvciAoY29uc3QgYXV0byYgZWwgOiBTOjp0aWxlcykgewoJCQlzdGQ6OmNvdXQgPDwgZWwuc18gPDwgIlxuIjsKCQl9Cgl9