Defined in header
Movable<T> specifies that
T is an object type that can moved (that is, it can be move constructed, move assigned, and lvalues of type
T can be swapped).
| specifies that an object of a type can be copied, moved, and swapped |