#include<iostream>
using namespace std;
struct Abstract {
virtual void pure() = 0;
virtual void foo() {
pure();
}
Abstract() {
foo();
}
~Abstract() {
foo();
}
};
struct X : public Abstract {
virtual void pure() { cout << " X :: pure() " << endl; }
virtual void impure() { cout << " X :: impure() " << endl; }
};
int main() {
X x;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgQWJzdHJhY3QgewogICAgdmlydHVhbCB2b2lkIHB1cmUoKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZm9vKCkgewogICAgICAgIHB1cmUoKTsKICAgIH0KICAgIEFic3RyYWN0KCkgewogICAgICAgIGZvbygpOwogICAgfQogICAgfkFic3RyYWN0KCkgewogICAgICAgIGZvbygpOwogICAgfQp9OwoKc3RydWN0IFggOiBwdWJsaWMgQWJzdHJhY3QgewogICAgdmlydHVhbCB2b2lkIHB1cmUoKSB7IGNvdXQgPDwgIiBYIDo6IHB1cmUoKSAiIDw8IGVuZGw7IH0KICAgIHZpcnR1YWwgdm9pZCBpbXB1cmUoKSB7IGNvdXQgPDwgIiBYIDo6IGltcHVyZSgpICIgPDwgZW5kbDsgfQp9OwppbnQgbWFpbigpIHsKICAgIFggeDsKfQ==