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