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