|  | 
An I/O object service must meet the requirements for a service, as well as the requirements listed below.
        In the table below, X denotes
        an I/O object service class, a
        and ao denote values of type
        X, b
        and c denote values of type
        X::implementation_type, and u denotes an identifier.
      
Table 23. IoObjectService requirements
| expression | return type | 
                  assertion/note | 
|---|---|---|
| 
                   | ||
| 
                   | 
                  note:  | |
| a.construct(b); | ||
| a.destroy(b); | 
                  note:  | |
| a.move_construct(b, c); | note: only required for I/O objects that support movability. | |
| a.move_assign(b, ao, c); | note: only required for I/O objects that support movability. |