struct Interface {};
template<class T>
struct Base : private T
{
void foo() {}
};
using BaseX = Base<Interface>;
class Derived : Base<Interface>
{
Derived()
{
Base<Interface>::foo(); // Error
BaseX::foo(); // Works
}
};
int main() {
return 0;
}
CnN0cnVjdCBJbnRlcmZhY2Uge307Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgQmFzZSA6IHByaXZhdGUgVAp7Cgl2b2lkIGZvbygpIHt9Cn07Cgp1c2luZyBCYXNlWCA9ICAgQmFzZTxJbnRlcmZhY2U+OwoKY2xhc3MgRGVyaXZlZCA6IEJhc2U8SW50ZXJmYWNlPgp7CglEZXJpdmVkKCkKCXsKCQlCYXNlPEludGVyZmFjZT46OmZvbygpOyAvLyBFcnJvcgoJCUJhc2VYOjpmb28oKTsgLy8gV29ya3MKCX0KfTsKCmludCBtYWluKCkgewoJcmV0dXJuIDA7Cn0K