| 585 | } |
| 586 | |
| 587 | span<const value_type> read_buffer() |
| 588 | { |
| 589 | if (buffer_len_ == 0) |
| 590 | { |
| 591 | buffer_len_ = read(buffer_.data(), buffer_.size()); |
| 592 | } |
| 593 | std::size_t length = buffer_len_; |
| 594 | buffer_len_ = 0; |
| 595 | |
| 596 | return span<const value_type>(buffer_.data(), length); |
| 597 | } |
| 598 | |
| 599 | template <typename Category = iterator_category> |
| 600 | typename std::enable_if<std::is_same<Category,std::random_access_iterator_tag>::value, std::size_t>::type |