#include <iostream>
#include <vector>
#include <string>
typedef std::string String;
typedef std::vector<String> StringVector;
class StringVectorWrapper {
StringVector vector;
public:
operator StringVector&() {
return vector;
}
StringVectorWrapper& operator << (const String& str) {
vector.push_back(str);
return *this;
}
};
void printVector(const StringVector& vector) {
for(StringVector::const_iterator it = vector.begin(); it != vector.end(); it++)
std::cout << *it << std::endl;
}
int main(void) {
StringVectorWrapper w;
w << "A" << "B";
printVector(w);
printVector(StringVectorWrapper() << "Z" << "W");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdHlwZWRlZiBzdGQ6OnN0cmluZyBTdHJpbmc7CnR5cGVkZWYgc3RkOjp2ZWN0b3I8U3RyaW5nPiBTdHJpbmdWZWN0b3I7CgpjbGFzcyBTdHJpbmdWZWN0b3JXcmFwcGVyIHsKICAgIFN0cmluZ1ZlY3RvciB2ZWN0b3I7CnB1YmxpYzogICAgCiAgICBvcGVyYXRvciBTdHJpbmdWZWN0b3ImKCkgewogICAgICAgIHJldHVybiB2ZWN0b3I7ICAgICAgICAKICAgIH0KICAgIAogICAgU3RyaW5nVmVjdG9yV3JhcHBlciYgb3BlcmF0b3IgPDwgKGNvbnN0IFN0cmluZyYgc3RyKSB7CiAgICAgICAgdmVjdG9yLnB1c2hfYmFjayhzdHIpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKCnZvaWQgcHJpbnRWZWN0b3IoY29uc3QgU3RyaW5nVmVjdG9yJiB2ZWN0b3IpIHsKICAgIGZvcihTdHJpbmdWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdmVjdG9yLmJlZ2luKCk7IGl0ICE9IHZlY3Rvci5lbmQoKTsgaXQrKykKICAgICAgICBzdGQ6OmNvdXQgPDwgKml0IDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4odm9pZCkgewogICAgCiAgICBTdHJpbmdWZWN0b3JXcmFwcGVyIHc7CiAgICB3IDw8ICJBIiA8PCAiQiI7ICAgIAogICAgcHJpbnRWZWN0b3Iodyk7CiAgICAKICAgIHByaW50VmVjdG9yKFN0cmluZ1ZlY3RvcldyYXBwZXIoKSA8PCAiWiIgPDwgIlciKTsKICAgIAogICAgCiAgICByZXR1cm4gMDsKfQ==