[/
 / 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:Protocol Protocol requirements]

A protocol must meet the requirements of `CopyConstructible` types (C++ Std,
20.1.3), and the requirements of `Assignable` types (C++ Std, 23.1).

In the table below, `X` denotes a protocol class, and `a` denotes a value of
`X`.

[table Protocol requirements
  [[expression] [return type] [assertion/note\npre/post-conditions]]
  [
    [`X::endpoint`]
    [type meeting [link boost_asio.reference.Endpoint endpoint] requirements]
    []
  ]
  [
    [`a.family()`]
    [`int`]
    [
      Returns a value suitable for passing as the /domain/ argument to
      __POSIX__ __socket__ (or equivalent).
    ]
  ]
  [
    [`a.type()`]
    [`int`]
    [
      Returns a value suitable for passing as the /type/ argument to __POSIX__
      __socket__ (or equivalent).
    ]
  ]
  [
    [`a.protocol()`]
    [`int`]
    [
      Returns a value suitable for passing as the /protocol/ argument to
      __POSIX__ __socket__ (or equivalent).
    ]
  ]
]

[endsect]
