struct A { };
struct B { };
struct A_D : public A { };
struct A_applicator {
virtual void apply( A ) { }
};
struct B_applicator {
virtual void apply( B ) { }
};
struct dual_applicator : public B_applicator, public A_applicator {
using B_applicator::apply;
using A_applicator::apply;
};
int main() {
dual_applicator app;
A_D d;
app.apply(d);
}
c3RydWN0IEEgeyB9OwpzdHJ1Y3QgQiB7IH07CnN0cnVjdCBBX0QgOiBwdWJsaWMgQSB7IH07CgpzdHJ1Y3QgQV9hcHBsaWNhdG9yIHsKICAgIHZpcnR1YWwgdm9pZCBhcHBseSggQSApIHsgfQp9OwpzdHJ1Y3QgQl9hcHBsaWNhdG9yIHsKCXZpcnR1YWwgdm9pZCBhcHBseSggQiApIHsgfQp9OwpzdHJ1Y3QgZHVhbF9hcHBsaWNhdG9yIDogcHVibGljIEJfYXBwbGljYXRvciwgcHVibGljIEFfYXBwbGljYXRvciB7Cgl1c2luZyBCX2FwcGxpY2F0b3I6OmFwcGx5OwoJdXNpbmcgQV9hcHBsaWNhdG9yOjphcHBseTsKfTsKCmludCBtYWluKCkgewoJZHVhbF9hcHBsaWNhdG9yIGFwcDsKCUFfRCBkOwoJYXBwLmFwcGx5KGQpOwp9Cg==