[/
 / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section:IoObjectService I/O object service requirements]

An I/O object service must meet the requirements for a [link
boost_asio.reference.Service service], as well as the requirements listed
below.

In the table below, `X` denotes an I/O object service class, `a` denotes a
value of type `X`, `b` denotes a value of type `X::implementation_type`, and
`u` denotes an identifier.

[table IoObjectService requirements
  [[expression] [return type] [assertion/note\npre/post-condition]]
  [
    [`X::implementation_type`]
    []
    []
  ]
  [
    [`X::implementation_type u;`]
    []
    [note: `X::implementation_type` has a public default constructor and
     destructor.]
  ]
  [
    [``
      a.construct(b);
    ``]
    []
    []
  ]
  [
    [``
      a.destroy(b);
    ``]
    []
    [note: `destroy()` will only be called on a value that has previously been
     initialised with `construct()`.]
  ]
]

[endsect]
