1[/ 2 / Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) 3 / 4 / Distributed under the Boost Software License, Version 1.0. (See accompanying 5 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 /] 7 8[section:MutableBufferSequence Mutable buffer sequence requirements] 9 10A ['mutable buffer sequence] represents a set of memory regions that may be 11used to receive the output of an operation, such as the `receive` operation of 12a socket. 13 14A type `X` meets the `MutableBufferSequence` requirements if it satisfies the 15requirements of `Destructible` (C++Std [destructible]) and 16`CopyConstructible` (C++Std [copyconstructible]), as well as the additional 17requirements listed below. 18 19In the table below, `x` denotes a (possibly const) value of type `X`, and `u` 20denotes an identifier. 21 22[table MutableBufferSequence requirements 23 [[expression] [return type] [assertion/note[br]pre/post-condition]] 24 [ 25 [`boost::asio::buffer_sequence_begin(x)`[br] 26 `boost::asio::buffer_sequence_end(x)`] 27 [An iterator type meeting the requirements for bidirectional iterators 28 (C++Std \[bidirectional.iterators\]) whose value type is convertible to 29 `mutable_buffer`.] 30 [] 31 ] 32 [ 33 [`` 34 X u(x); 35 ``] 36 [] 37 [post:[br] 38 `` 39 equal( 40 boost::asio::buffer_sequence_begin(x), 41 boost::asio::buffer_sequence_end(x), 42 boost::asio::buffer_sequence_begin(u), 43 boost::asio::buffer_sequence_end(u), 44 [](const mutable_buffer& b1, 45 const mutable_buffer& b2) 46 { 47 return b1.data() == b2.data() 48 && b1.size() == b2.size(); 49 }) 50 ``] 51 ] 52] 53 54[endsect] 55