#include <iostream>
struct foo {
void operator<<(int) {
std::cout << "foo int\n";
}
void operator<<(char) {
std::cout << "foo char\n";
}
};
struct bar : foo {
void operator<<(char) {
std::cout << "bar char\n";
}
};
int main() {
foo f;
f << 1;
f << 'c';
bar b;
b << 1;
b << 'c';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IGZvbyB7Cgl2b2lkIG9wZXJhdG9yPDwoaW50KSAgewoJCXN0ZDo6Y291dCA8PCAiZm9vIGludFxuIjsKCX0KCXZvaWQgb3BlcmF0b3I8PChjaGFyKSB7CgkJc3RkOjpjb3V0IDw8ICJmb28gY2hhclxuIjsKCX0KfTsKCnN0cnVjdCBiYXIgOiBmb28gewoJdm9pZCBvcGVyYXRvcjw8KGNoYXIpIHsKCQlzdGQ6OmNvdXQgPDwgImJhciBjaGFyXG4iOwoJfQp9OwoKaW50IG1haW4oKSB7Cglmb28gZjsKCWYgPDwgMTsKCWYgPDwgJ2MnOwoJCgliYXIgYjsKCWIgPDwgMTsKCWIgPDwgJ2MnOwoJCglyZXR1cm4gMDsKfQ==