/// illustrating http://stackoverflow.com/a/99622/2932052 (variation)
/// under discussion in http://stackoverflow.com/q/30780171/2932052
#include <iostream>
using namespace std;
class A
{
int id;
public:
A(int i): id(i) {}
int callFoo() { return foo(); }
virtual int foo() = 0;
};
class B: public A
{
public:
B(): A(callFoo()) {}
int foo() { return 3; }
};
int main() {
B b;
cout << b.callFoo() << endl;
return 0;
}
Ly8vIGlsbHVzdHJhdGluZyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTYyMi8yOTMyMDUyICh2YXJpYXRpb24pCi8vLyB1bmRlciBkaXNjdXNzaW9uIGluIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xLzMwNzgwMTcxLzI5MzIwNTIKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CiAgICBpbnQgaWQ7CnB1YmxpYzoKICAgIEEoaW50IGkpOiBpZChpKSB7fQogICAgaW50IGNhbGxGb28oKSB7IHJldHVybiBmb28oKTsgfQogICAgdmlydHVhbCBpbnQgZm9vKCkgPSAwOwp9OwoKY2xhc3MgQjogcHVibGljIEEKewpwdWJsaWM6CiAgICBCKCk6IEEoY2FsbEZvbygpKSB7fQogICAgaW50IGZvbygpIHsgcmV0dXJuIDM7IH0KfTsKCmludCBtYWluKCkgewoJQiBiOwoJY291dCA8PCBiLmNhbGxGb28oKSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=