This is mistake. In short: please notify the library staff.
Indeed, the operation zipreturns a tuple std::tuple<int const&, int const&>:
and, although the dataset itself is currently well alive, the tuple is returned by reference in the operation join...:
sample const& operator*() const { return m_first_size > 0 ? *m_it1 : *m_it2; }
, ::sample, ::reference. .
¹