Есть ли элегантный способ представить карту, содержащую различные типы в C ++?

Я строю класс, который я хочу настроить, используя различные параметры, которые могут быть одним из:int, double а такжеstring (или жеconst char * в этом отношении). На языке, подобном Ruby, я бы построил функцию инициализации, которая принимает хеш, заданный строкой. Например:

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 })

Как я могу создать подобное поведение в C ++?

Оглядываясь вокруг, я обнаружил, что несколько постов говорят оboost::variant, Я предпочел бы избегать использования наддува, если путем ограничения различных типов тремя типами, которые я упомянул выше, можно сделать довольно чистое решение.

редактироватьЯ согласен, что использование хорошо разработанного и широко протестированного кода, такого как Boost.Variant, намного лучше, чем повторная реализация той же идеи. В этом случае проблема сводится к использованию только 3 основных типов, поэтому я искал самый простой из возможных способов его реализации.

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

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