#include <iostream>
#include <string>
#include <map>
using namespace std;
class Employee {};
class A: public Employee {};
class B: public Employee {};
class C: public Employee {};
typedef Employee *makeEmployee();
map<string,makeEmployee*> maker
{
{"A",[]()->Employee*{ return new A(); }},
{"B",[]()->Employee*{ return new B(); }},
{"C",[]()->Employee*{ return new C(); }},
};
int main()
{
Employee *tmp=maker["A"]();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRW1wbG95ZWUge307CmNsYXNzIEE6IHB1YmxpYyBFbXBsb3llZSB7fTsKY2xhc3MgQjogcHVibGljIEVtcGxveWVlIHt9OwpjbGFzcyBDOiBwdWJsaWMgRW1wbG95ZWUge307CnR5cGVkZWYgRW1wbG95ZWUgKm1ha2VFbXBsb3llZSgpOwoKbWFwPHN0cmluZyxtYWtlRW1wbG95ZWUqPiBtYWtlcgogewogICAgeyJBIixbXSgpLT5FbXBsb3llZSp7IHJldHVybiBuZXcgQSgpOyB9fSwKICAgIHsiQiIsW10oKS0+RW1wbG95ZWUqeyByZXR1cm4gbmV3IEIoKTsgfX0sCiAgICB7IkMiLFtdKCktPkVtcGxveWVlKnsgcmV0dXJuIG5ldyBDKCk7IH19LAogfTsKCmludCBtYWluKCkKICB7CiAgIEVtcGxveWVlICp0bXA9bWFrZXJbIkEiXSgpOwogICByZXR1cm4gMDsKICB9