#include <map>
#include <memory>
#include <string>
//#include <boost/variant.hpp> ??? Guess Ideone doesn't have boost::variant?
struct BoostVariantFake
{
int blah;
};
struct Data;
typedef std::map<std::string, std::unique_ptr<Data> > ConfigMap;
typedef BoostVariantFake ConfigValueTypes;
//typedef boost::variant<int, float> ConfigValueTypes;
struct Data
{
ConfigValueTypes value;
ConfigMap map;
};
int main()
{
ConfigMap myMap;
myMap["test"] = std::unique_ptr<Data>(new Data);
myMap["test"]->value.blah = 357;
myMap["test"]->map["example"] = std::unique_ptr<Data>(new Data);
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHN0cmluZz4KLy8jaW5jbHVkZSA8Ym9vc3QvdmFyaWFudC5ocHA+ID8/PyBHdWVzcyBJZGVvbmUgZG9lc24ndCBoYXZlIGJvb3N0Ojp2YXJpYW50PwoKc3RydWN0IEJvb3N0VmFyaWFudEZha2UKewogICAgaW50IGJsYWg7Cn07CgpzdHJ1Y3QgRGF0YTsKCnR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEYXRhPiA+IENvbmZpZ01hcDsKCnR5cGVkZWYgQm9vc3RWYXJpYW50RmFrZSBDb25maWdWYWx1ZVR5cGVzOwovL3R5cGVkZWYgYm9vc3Q6OnZhcmlhbnQ8aW50LCBmbG9hdD4gQ29uZmlnVmFsdWVUeXBlczsKCnN0cnVjdCBEYXRhCnsKICAgIENvbmZpZ1ZhbHVlVHlwZXMgdmFsdWU7CiAgICBDb25maWdNYXAgbWFwOwp9OwoKaW50IG1haW4oKQp7CiAgICBDb25maWdNYXAgbXlNYXA7CiAgICBteU1hcFsidGVzdCJdID0gc3RkOjp1bmlxdWVfcHRyPERhdGE+KG5ldyBEYXRhKTsKICAgIG15TWFwWyJ0ZXN0Il0tPnZhbHVlLmJsYWggPSAzNTc7CiAgICBteU1hcFsidGVzdCJdLT5tYXBbImV4YW1wbGUiXSA9IHN0ZDo6dW5pcXVlX3B0cjxEYXRhPihuZXcgRGF0YSk7CiAgICAKICAgIAogICAgcmV0dXJuIDA7Cn0=