#include<iostream>
struct Base {
void foo() {
std::cout << "Base::foo()\n";
}
Base& operator = (const Base&)
{
std::cout << "Base::operator =\n";
return *this;
}
};
struct Derived : Base {
private:
using Base::foo;
using Base::operator =;
};
int main () {
Derived d1, d2;
d1 = d2; // ok !!
//d1.foo(); // error
}
I2luY2x1ZGU8aW9zdHJlYW0+CgpzdHJ1Y3QgQmFzZSB7CiAgdm9pZCBmb28oKSB7CiAgICBzdGQ6OmNvdXQgPDwgIkJhc2U6OmZvbygpXG4iOwogIH0KICAgIAogIEJhc2UmIG9wZXJhdG9yID0gKGNvbnN0IEJhc2UmKQogIHsKICAgIHN0ZDo6Y291dCA8PCAiQmFzZTo6b3BlcmF0b3IgPVxuIjsKICAgIHJldHVybiAqdGhpczsKICB9Cn07CiAKc3RydWN0IERlcml2ZWQgOiBCYXNlIHsKcHJpdmF0ZToKICB1c2luZyBCYXNlOjpmb287CiAgdXNpbmcgQmFzZTo6b3BlcmF0b3IgPTsgIAp9OwoKaW50IG1haW4gKCkgewogIERlcml2ZWQgZDEsIGQyOyAKICBkMSA9IGQyOyAgICAgLy8gb2sgISEKICAvL2QxLmZvbygpOyAgLy8gZXJyb3IKfQo=