Matriz associativa C ++ com tipos arbitrários para valores

Qual é a melhor maneira de ter uma matriz associativa com tipos de valores arbitrários para cada chave em C ++?

Atualmente, meu plano é criar uma classe "value" com variáveis de membro dos tipos que esperarei. Por exemplo:

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;

Uma desvantagem disso é que você precisa saber o tipo ao acessar o "Valor". ou seja:

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

Além disso, quanto mais tipos forem colocados em Value, mais inchada será a matriz.

Alguma sugestão melhor?

questionAnswers(5)

yourAnswerToTheQuestion