C ++ ассоциативный массив с произвольными типами для значений

Каков наилучший способ иметь ассоциативный массив с произвольными типами значений для каждого ключа в C ++?

В настоящее время я планирую создать класс «value» с переменными-членами типов, которые я буду ожидать. Например:

class Value {

    int iValue;
    Value(int v) { iValue = v; }

    std::string sValue;
    Value(std::string v) { sValue = v; }

    SomeClass *cValue;
    Value(SomeClass *v) { cValue = c; }

};

std::map<std::string, Value> table;

Недостатком этого является то, что вы должны знать тип при доступе к «Значение». т.е .:

table["something"] = Value(5);
SomeClass *s = table["something"].cValue;  // broken pointer

Также, чем больше типов добавлено в Value, тем более раздутым будет массив.

Есть лучшие предложения?

Ответы на вопрос(1)

Ваш ответ на вопрос