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:IoObjectService I/O object service requirements]
9
10An I/O object service must meet the requirements for a [link
11boost_asio.reference.Service service], as well as the requirements listed
12below.
13
14In the table below, `X` denotes an I/O object service class, `a` and `ao` denote
15values of type `X`, `b` and `c` denote values of type `X::implementation_type`,
16and `u` denotes an identifier.
17
18[table IoObjectService requirements
19  [[expression] [return type] [assertion/note[br]pre/post-condition]]
20  [
21    [`X::implementation_type`]
22    []
23    []
24  ]
25  [
26    [`X::implementation_type u;`]
27    []
28    [note: `X::implementation_type` has a public default constructor and
29     destructor.]
30  ]
31  [
32    [``
33      a.construct(b);
34    ``]
35    []
36    []
37  ]
38  [
39    [``
40      a.destroy(b);
41    ``]
42    []
43    [note: `destroy()` will only be called on a value that has previously been
44     initialised with `construct()` or `move_construct()`.]
45  ]
46  [
47    [``
48      a.move_construct(b, c);
49    ``]
50    []
51    [note: only required for I/O objects that support movability.]
52  ]
53  [
54    [``
55      a.move_assign(b, ao, c);
56    ``]
57    []
58    [note: only required for I/O objects that support movability.]
59  ]
60]
61
62[endsect]
63