Converte um std :: vector de um tipo boost :: variant

Como eu poderia implementar a função abaixo para converter de vetor deValue para umContainer? Eu gostaria de afirmar se nem todos os membros davalues são do mesmo tipo, ou seja, se o vetor contiver uma mistura de strings e ints. Isso ocorre porque o valor de retorno da função é umstd::vector<int> ou umstd::vector<std::string>.

typedef boost::variant<int, std::string> Value;
typedef boost::variant<std::vector<int>, std::vector<std::string> > Container;

Container valuesToContainer(const std::vector<Value>& values) 
{
    return Container();
}

questionAnswers(2)

yourAnswerToTheQuestion