Checks if a type is seekable. A seekable stream must define the member function seek. The stream can be either a class or a struct.
Checks if a type is a sink. A sink is a stream that can be written to and must define the member function write. The stream can be either a class or a struct.
Checks if a type is a source. A source is a stream that can be read from and must define the member function read. The stream can be either a class or a struct.
Checks if the type is both a source and a sink.
Checks if the type is either a source or a sink (i.e., a stream).