{
    const Container & container;
    const void * data;
    const void * data_end;
    T current_value;
public:
    using Self = BinaryDataAsSequenceOfValuesIterator<T, Container>;
    explicit BinaryDataAsSequenceOfValuesIterator(const Container & container_)
        : container(container_),
          data(container.data()),
          data_end(container.data() + container.size()),
          current_value(T{})
    {
        static_assert(sizeof(container[0]) == 1 && is_pod_v<std::decay_t<decltype(container[0])>>, "Only works on containers of byte-size PODs.");
        read();
    }
    const T & operator*() const