Сейчас я углубляюсь в boost::iostreams
и ищу способ создания потока, который повторяется по некоторым container<char>
.
. Сейчас у меня есть код, который работает для std::vector<char>
, но он делает ТОЛЬКО для него, , потому что я написал std::vector
-специфический код.
Я делаю следующее:
template <class Object, class Container>
void Load(Object& object, const Container& container) {
using namespace boost::iostreams;
// Create a stream that iterates over vector and use it in
// the following procedure
LoadImpl(object, stream<array_source>(&container[0], container.size()));
}
, где LoadImpl(...)
описывается следующим образом:
template <class Object
void LoadImpl(Object& object, std::istream& stream) { ... }
и используется для обертывания сериализации / десериализации с использованием некоторого определенного stream
.
Не могли бы вы дать мне любойсовет, как сделать Load
рутину более общей?Допустим, я хотел бы иметь возможность заменить std::vector<char>
на него так же, как какой-нибудь контейнер std::string
.