# OTL 4.0, STL-compliant OTL input iterator

# STL-compliant OTL input iterator

# otl_input_iterator<T, Distance>

Category: iterators | Component type: type

### Description

`otl_input_iterator` is an Input Iterator that performs input of objects of type `T` from a particular otl_stream. When end of stream is reached, the `otl_input_iterator` takes on a special end of stream value, which is a past-the-end iterator. Note that all of the restrictions of an Input Iterator must be obeyed, including the restrictions on the ordering of `operator*` and `operator++` operations.

### Definition

Defined in the OTL header file.

### Template parameters

Parameter | Description | Default
--- | --- | ---
`T` | The `otl_input_iterator`'s value type. `Operator*` returns a `const T&`. |
`Distance` | The `otl_input_iterator`'s distance type. | `ptrdiff_t`

### Model of

Input Iterator

### Type requirements

The value type `T` must be a type such that `s >> T` is a valid expression.

The value type `T` must be a model of Default Constructible.

The distance type must, as described in the Input Iterator requirements, be a signed integral type.

### Public base classes

None.

### Members

Member | Where defined | Description
--- | --- | ---
`otl_input_iterator()` | `otl_input_iterator` | See below.
`otl_input_iterator(otl_stream&)` | `otl_input_iterator` | See below.
`otl_input_iterator(const otl_input_iterator&)` | Trivial Iterator | The copy constructor
`otl_input_iterator& operator=(const otl_stream&)` | Trivial Iterator | The assignment operator
`const T& operator*() const` | Input Iterator | Returns the next object in the stream.
`otl_input_iterator& operator++()` | Input Iterator | Preincrement.
`otl_input_iterator& operator++(int)` | Input Iterator | Postincrement.
`bool operator==(const otl_input_iterator&, const otl_input_iterator&)` | Trivial iterator | The equality operator. This is a global function, not a member function.
`input_iterator_tag iterator_category(const otl_input_iterator&)` | iterator tags | Returns the iterator's category.
`T* value_type(const otl_input_iterator&)` | iterator tags | Returns the iterator's value type.
`Distance* distance_type(const otl_input_iterator&)` | iterator tags | Returns the iterator's distance type. <

### New members

These members are not defined in the Input Iterator requirements, but are specific to `otl_input_iterator`.

Function | Description
--- | ---
`otl_input_iterator()` | The default constructor: Constructs an end-of-stream iterator. This is a past-the-end iterator, and it is useful when constructing a "range".
`otl_input_iterator(otl_stream& s)` | Creates an `otl_input_iterator` that reads values from the OTL stream `s`. When `s` reaches end of stream, this iterator will compare equal to an end-of-stream iterator created using the default constructor.

### Notes

### See also

otl_output_iterator, Input Iterator, Output Iterator

Contents Go Home

Copyright © 1996, 2007, Sergei Kuchin, email: skuchin@ispwest.com, skuchin@gmail.com.

Permission to use, copy, modify and redistribute this document for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies.