#include <iostream>
using namespace std;
struct TypeX {};
struct TypeY {};
class A {
public:
A(TypeX a)
{
/* initialize using TypeX */
}
A(TypeY a)
{
/* initialize using TypeY */
}
};
class B {
private:
A a;
static const TypeX x;
static const TypeY y;
public:
B(bool useTypeX)
: a(useTypeX ? A(x) : A(y))
{}
};
const TypeX B::x;
const TypeY B::y;
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgVHlwZVgge307CnN0cnVjdCBUeXBlWSB7fTsKCmNsYXNzIEEgewpwdWJsaWM6CiAgQShUeXBlWCBhKQogIHsKICAgIC8qIGluaXRpYWxpemUgdXNpbmcgVHlwZVggKi8KICB9CiAgQShUeXBlWSBhKQogIHsKICAgIC8qIGluaXRpYWxpemUgdXNpbmcgVHlwZVkgKi8KICB9Cn07CgoKY2xhc3MgQiB7CnByaXZhdGU6CiAgQSBhOwogIHN0YXRpYyBjb25zdCBUeXBlWCB4OwogIHN0YXRpYyBjb25zdCBUeXBlWSB5OwoKcHVibGljOgogIEIoYm9vbCB1c2VUeXBlWCkKICAgIDogYSh1c2VUeXBlWCA/IEEoeCkgOiBBKHkpKQogIHt9Cn07Cgpjb25zdCBUeXBlWCBCOjp4Owpjb25zdCBUeXBlWSBCOjp5OwppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9