#pragma once #include #include #include namespace cpp11 { class MovableBuffer { public: MovableBuffer() = default; explicit MovableBuffer(std::vector data); MovableBuffer(const MovableBuffer&) = delete; MovableBuffer(MovableBuffer&& other) noexcept; auto operator=(MovableBuffer&& other) noexcept -> MovableBuffer&; [[nodiscard]] auto size() const -> std::size_t; [[nodiscard]] auto data() const -> const std::vector&; private: std::vector data_; }; [[nodiscard]] auto consume(MovableBuffer buffer) -> std::size_t; } // namespace cpp11