#include <stdio.h>
struct A {
virtual void print() const { printf("a\n"); }
};
struct B : public A {
virtual void print() const { printf("b\n"); }
};
struct C {
operator B() { return B(); }
};
void print(const A& a) {
a.print();
}
int main() {
C c;
print(c);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgQSB7CiAgICAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoKSBjb25zdCB7IHByaW50ZigiYVxuIik7IH0KICAgIH07CgogICAgc3RydWN0IEIgOiBwdWJsaWMgQSB7CiAgICAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoKSBjb25zdCB7IHByaW50ZigiYlxuIik7IH0KICAgIH07CgogICAgc3RydWN0IEMgewogICAgICAgb3BlcmF0b3IgQigpIHsgcmV0dXJuIEIoKTsgfQogICAgfTsKCiAgICB2b2lkIHByaW50KGNvbnN0IEEmIGEpIHsKICAgICAgIGEucHJpbnQoKTsKICAgIH0KCiAgICBpbnQgbWFpbigpIHsKICAgICAgIEMgYzsKICAgICAgIHByaW50KGMpOwogICAgfQ==