namespace std { namespace experimental { namespace net { inline namespace v1 { class mutable_buffer { public: // constructors: mutable_buffer() noexcept; mutable_buffer(void* p, size_t n) noexcept; // members: void* data() const noexcept; size_t size() const noexcept; mutable_buffer& operator+=(size_t n) noexcept; private: void* data_; // exposition only size_t size_; // exposition only }; } // inline namespace v1 } // namespace net } // namespace experimental } // namespace std
The mutable_buffer class satisfies the requirements of MutableBufferSequence ([buffer.reqmts.mutablebuffersequence]), DefaultConstructible (C++ 2014 [defaultconstructible]), and CopyAssignable (C++ 2014 [copyassignable]).
Postconditions: data_ == nullptr and size_ == 0.
mutable_buffer(void* p, size_t n) noexcept;
Postconditions: data_ == p and size_ == n.
Returns: data_.
Returns: size_.
mutable_buffer& operator+=(size_t n) noexcept;
Effects: Sets data_ to static_cast<char*>(data_) + min(n, size_), and then size_ to size_ - min(n, size_).
Returns: *this.