4 General Principles [general]

4.1 Conformance [conformance]

Conformance is specified in terms of behavior. Ideal behavior is not always implementable, so the conformance subclauses take that into account.

4.1.1 POSIX conformance [conformance.9945]

Some behavior is specified by reference to POSIX. How such behavior is actually implemented is unspecified.

Note: This constitutes an “as if” rule allowing implementations to call native operating system or other APIs.  — end note ]

Implementations are encouraged to provide such behavior as it is defined by POSIX. Implementations shall document any behavior that differs from the behavior defined by POSIX. Implementations that do not support exact POSIX behavior are encouraged to provide behavior as close to POSIX behavior as is reasonable given the limitations of actual operating systems and file systems. If an implementation cannot provide any reasonable behavior, the implementation shall report an error as specified in Error Reporting ([err.report]).

Note: This allows users to rely on an exception being thrown or an error code being set when an implementation cannot provide any reasonable behavior.  — end note ]

Implementations are not required to provide behavior that is not supported by a particular operating system.

4.1.2 Conditionally-supported features [conformance.conditional]

This document defines conditionally-supported features, in the form of additional member functions on types that satisfy Protocol ([socket.reqmts.protocol]), Endpoint ([socket.reqmts.endpoint]), SettableSocketOption ([socket.reqmts.settablesocketoption]), GettableSocketOption ([socket.reqmts.gettablesocketoption]) or IoControlCommand ([socket.reqmts.iocontrolcommand]) requirements.

Note: This is so that, when the additional member functions are available, C++ programs can extend the library to add support for other protocols and socket options.  — end note ]

For the purposes of this document, implementations that provide all of the additional member functions are known as extensible implementations.

Note: Implementations are encouraged to provide the additional member functions, where possible. It is intended that POSIX and Windows implementations will provide them.  — end note ]

4.2 Acknowledgments [intro.ack]

The design of this specification is based, in part, on the Asio library written by Christopher Kohlhoff.