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.