|  | 
        A type X meets the Protocol requirements if it satisfies the
        requirements of Destructible
        (C++Std [destructible]), CopyConstructible
        (C++Std [copyconstructible]), and CopyAssignable
        (C++Std [copyassignable]), as well as the additional requirements listed
        below.
      
        No copy or move operation of the type X
        shall exit via an exception.
      
Table 25. Protocol requirements
| expression | return type | 
                  assertion/note | 
|---|---|---|
| 
                   | type meeting endpoint requirements | 
        In the table below, a denotes
        a (possibly const) value of type X.
      
Table 26. Protocol requirements for extensible implementations
| expression | return type | 
                  assertion/note | 
|---|---|---|
| 
                   | 
                   | 
                  Returns a value suitable for passing as the domain
                  argument to POSIX  | 
| 
                   | 
                   | 
                  Returns a value suitable for passing as the type
                  argument to POSIX  | 
| 
                   | 
                   | 
                  Returns a value suitable for passing as the protocol
                  argument to POSIX  |