Представьте, что у меня есть класс Variant, который может представлять различные типы POD, плюс std :: string, и у меня есть метод шаблона T get_value(const Variant&)
, который может извлекать из него базовые типы.
Предположим, у меня есть их вектор, т.е. std::vector<Variant> variants;
, и я хочу прочитать несколько значений из него с удобным синтаксисом, например так:
int x;
double y;
std::string z;
// Get elements 0, 1, and 2 as int, double, and string respectively
streamlikeObject >> x >> y >> z;
Вопрос в том, что является хорошим способом для формирования гипотетического streamlikeObject
в примере? Я могу представить себе создание собственного класса с оператором извлечения, но меня просто интересует, есть ли что-то в библиотеке std или, возможно, Boost, который обрабатывает подобные вещи.
Или альтернативно: как еще можно извлечь эти данные с аналогичной степенью краткости кода? Возможно, есть лучшая альтернатива синтаксису потока.