---
name: "std::istream_iterator"
section: "3"
platform: "linux"
package: "gcc"
version: "16.2.1+r23+gd564253eb6c8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/std::istream_iterator"
---

# std::istream\_iterator(3)

Provides input iterator semantics for streams.

## NAME

std::istream\_iterator\< \_Tp, \_CharT, \_Traits, \_Dist \> - Provides input iterator semantics for streams.

## SYNOPSIS

\#include \<iterator\>

Inherits **std::iterator\< input\_iterator\_tag, \_Tp, ptrdiff\_t, const \_Tp \*, const \_Tp & \>**.

### Public Types

typedef \_CharT **char\_type**\
 typedef ptrdiff\_t **difference\_type**\
 Distance between iterators is represented as this type.  typedef **basic\_istream**\< \_CharT, \_Traits \> **istream\_type**\
 typedef **input\_iterator\_tag** **iterator\_category**\
 One of the **tag types**.  typedef const \_Tp \* **pointer**\
 This type represents a pointer-to-value\_type.  typedef const \_Tp & **reference**\
 This type represents a reference-to-value\_type.  typedef \_Traits **traits\_type**\
 typedef \_Tp **value\_type**\
 The type *pointed*to"*by*the*iterator.*

### Public Member Functions

constexpr **istream\_iterator** () noexcept(/\***conditional** \*/)\
 Construct end of input stream iterator.  constexpr **istream\_iterator** (const istream\_iterator &\_\_obj) noexcept(/\***conditional** \*/)\
 constexpr **istream\_iterator** (**default\_sentinel\_t**) noexcept(is\_nothrow\_default\_constructible\_v\< \_Tp \>)\
 **istream\_iterator** (istream\_type &\_\_s)\
 Construct start of input stream iterator.  const \_Tp & **operator\*** () const noexcept\
 **istream\_iterator** & **operator++** ()\
 **istream\_iterator** **operator++** (int)\
 const \_Tp \* **operator-\>** () const noexcept\
 **istream\_iterator** & **operator=** (const **istream\_iterator** &)=default\

### Friends

bool **operator==** (const **istream\_iterator** &\_\_i, **default\_sentinel\_t**) noexcept\
 bool **operator==** (const **istream\_iterator** &\_\_x, const **istream\_iterator** &\_\_y) noexcept\
 Return true if the iterators refer to the same stream, or are both at end-of-stream.

## Detailed Description

### template\<typename \_Tp, typename \_CharT = char, typename \_Traits = char\_traits\<\_CharT\>, typename \_Dist = ptrdiff\_t\>

class std::istream\_iterator\< \_Tp, \_CharT, \_Traits, \_Dist \>"Provides input iterator semantics for streams.

## Member Typedef Documentation

### typedef ptrdiff\_t std::iterator\< input\_iterator\_tag, \_Tp, ptrdiff\_t, const \_Tp \*, const \_Tp & \>::difference\_type \[inherited\]

Distance between iterators is represented as this type.

### typedef input\_iterator\_tag std::iterator\< input\_iterator\_tag, \_Tp, ptrdiff\_t, const \_Tp \*, const \_Tp & \>::iterator\_category \[inherited\]

One of the **tag types**.

### typedef const \_Tp \* std::iterator\< input\_iterator\_tag, \_Tp, ptrdiff\_t, const \_Tp \*, const \_Tp & \>::pointer \[inherited\]

This type represents a pointer-to-value\_type.

### typedef const \_Tp & std::iterator\< input\_iterator\_tag, \_Tp, ptrdiff\_t, const \_Tp \*, const \_Tp & \>::reference \[inherited\]

This type represents a reference-to-value\_type.

### typedef \_Tp std::iterator\< input\_iterator\_tag, \_Tp, ptrdiff\_t, const \_Tp \*, const \_Tp & \>::value\_type \[inherited\]

The type "pointed to" by the iterator.

## Constructor & Destructor Documentation

### template\<typename \_Tp, typename \_CharT = char, typename \_Traits = char\_traits\<\_CharT\>, typename \_Dist = ptrdiff\_t\> std::istream\_iterator\< \_Tp, \_CharT, \_Traits, \_Dist \>::istream\_iterator () \[inline\], \[constexpr\], \[noexcept\]

Construct end of input stream iterator.

Referenced by **operator==**.

### template\<typename \_Tp, typename \_CharT = char, typename \_Traits = char\_traits\<\_CharT\>, typename \_Dist = ptrdiff\_t\> std::istream\_iterator\< \_Tp, \_CharT, \_Traits, \_Dist \>::istream\_iterator (istream\_type & \_\_s) \[inline\]

Construct start of input stream iterator.

References **std::\_\_addressof()**.

## Friends And Related Symbol Documentation

### template\<typename \_Tp, typename \_CharT = char, typename \_Traits = char\_traits\<\_CharT\>, typename \_Dist = ptrdiff\_t\> bool operator== (const istream\_iterator\< \_Tp, \_CharT, \_Traits, \_Dist \> & \_\_x, const istream\_iterator\< \_Tp, \_CharT, \_Traits, \_Dist \> & \_\_y) \[friend\]

Return true if the iterators refer to the same stream, or are both at end-of-stream.

References **istream\_iterator()**.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
