Existe uma maneira elegante de representar um mapa contendo tipos diferentes em C ++?

Eu estou construindo uma classe que eu quero configurar usando vários parâmetros que podem um dos seguintes:int, double estring (ouconst char * para esse assunto). Em uma linguagem como Ruby, eu criaria uma função de inicialização que usa um hash digitado por uma string. Por exemplo:

class Example
  def init_with_params params
    puts params
  end
end

e = Example.new
e.init_with_params({ "OutputFile" => "/tmp/out.txt", "CaptureFPS" => 25.0, "RetryDelaySeconds" => 5 })

Como posso criar um comportamento semelhante em C ++?

Olhando em volta, encontrei vários posts falando sobreboost::variant. Eu preferiria evitar o uso do impulso se, ao limitar os diferentes tipos aos três tipos mencionados acima, uma solução bastante limpa puder ser feita.

Editar: Concordo que usar um código bem projetado e amplamente testado, como o Boost.Variant, é muito melhor do que reimplementar a mesma idéia. Nesse caso, o problema é reduzido ao uso de apenas 3 tipos básicos, então eu estava procurando a maneira mais simples possível de implementá-lo.

questionAnswers(4)

yourAnswerToTheQuestion