В настоящее время я использую карту со строковым типом данных в качестве ключа и вариантное значение.Я полагаюсь на библиотеку boost :: variable для определения типа данных карты.В настоящее время я слежу за несколькими уроками по Boost :: Вариант для извлечения значений из карты без указания точного значения типа данных, которое я хочу получить при итерации по нему.source: https://theboostcpplibraries.com/boost.variant Я хочу что-то вроде последнего примера для универсального типа данных, но вместо того, чтобы печатать значения, я должен был их вернуть.Следующее ниже, кажется, не работает правильно.
struct output : public boost::static_visitor<>
{
template <typename T>
T operator()(T t) const { return t }
};
Я также создаю экземпляр карты, заполняя ее строковым типом данных в качестве ключей, и тип boost :: variable в качестве значений;и позже переберите карту и обработайте значения.
std::map<std::string,boost::variant<int, double, long long, std::string>> _keyPairValue;
for(auto &x: _keyPairValue)
{
// appending a key pair value to a bson object which is part of mongo sdk
b << x.first << boost::apply_visitor(output{},x.second);
}