class A {
public:
class B {public: bool value;};
A() {}
B b_;
protected:
void DoStuff(B& b) { return DoStuffImpl(b); }
private:
virtual void DoStuffImpl(B& b) = 0;
};
class X : public A {
public:
X() {}
void Trigger();
private:
virtual void DoStuffImpl(B& b);
};
void X::Trigger() {
DoStuff(b_);
}
void X::DoStuffImpl(B& b) {
b.value = true;
}
int main(){
X x;
x.Trigger();
return x.b_.value;
}
Y2xhc3MgQSB7CiBwdWJsaWM6CiAgY2xhc3MgQiB7cHVibGljOiBib29sIHZhbHVlO307CgogIEEoKSB7fQogIEIgYl87CiBwcm90ZWN0ZWQ6CiAgdm9pZCBEb1N0dWZmKEImIGIpIHsgcmV0dXJuIERvU3R1ZmZJbXBsKGIpOyB9CiBwcml2YXRlOgogIHZpcnR1YWwgdm9pZCBEb1N0dWZmSW1wbChCJiBiKSA9IDA7Cn07CgpjbGFzcyBYIDogcHVibGljIEEgewogcHVibGljOgogIFgoKSB7fQogIHZvaWQgVHJpZ2dlcigpOwogcHJpdmF0ZToKICB2aXJ0dWFsIHZvaWQgRG9TdHVmZkltcGwoQiYgYik7Cn07Cgp2b2lkIFg6OlRyaWdnZXIoKSB7CiAgICBEb1N0dWZmKGJfKTsKfQp2b2lkIFg6OkRvU3R1ZmZJbXBsKEImIGIpIHsKICAgIGIudmFsdWUgPSB0cnVlOwp9CgppbnQgbWFpbigpewogICAgWCB4OwogICAgeC5UcmlnZ2VyKCk7CiAgICByZXR1cm4geC5iXy52YWx1ZTsKfQ==