17 Buffer-oriented streams [buffer.stream]

17.1 Requirements [buffer.stream.reqmts]

17.1.5 Completion condition requirements [buffer.stream.reqmts.completioncondition]

A completion condition is a function object that is used with the algorithms read ([buffer.read]), async_read ([buffer.async.read]), write ([buffer.write]), and async_write ([buffer.async.write]) to determine when the algorithm has completed transferring data.

A type X meets the CompletionCondition requirements if it satisfies the requirements of Destructible (C++ 2014 [destructible]) and CopyConstructible (C++ 2014 [copyconstructible]), as well as the additional requirements listed below.

In the table below, x denotes a value of type X, ec denotes a (possibly const) value of type error_code, and n denotes a (possibly const) value of type size_t.

Table 20 — CompletionCondition requirements
expressionreturn typeassertion/note pre/post-condition
x(ec, n) size_t Let n be the total number of bytes transferred by the read or write algorithm so far.
Returns the maximum number of bytes to be transferred on the next read_some, async_read_some, write_some, or async_write_some operation performed by the algorithm. Returns 0 to indicate that the algorithm is complete.