Namespaces
Variants

std::istream_iterator<T,CharT,Traits,Distance>:: istream_iterator

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
(1)
istream_iterator ( ) ;
(до C++11)
constexpr istream_iterator ( ) ;
(начиная с C++11)
constexpr istream_iterator ( std:: default_sentinel_t ) ;
(2) (начиная с C++20)
istream_iterator ( istream_type & stream ) ;
(3)
(4)
istream_iterator ( const istream_iterator & other ) ;
(до C++11)
istream_iterator ( const istream_iterator & other ) = default ;
(начиная с C++11)
1,2) Конструирует итератор конца потока , инициализирует сохраненное значение значением по умолчанию. Этот конструктор является constexpr, если инициализатор в определении auto x = T ( ) ; является константным инициализатором (since C++11) .
3) Инициализирует итератор, сохраняет адрес stream в члене данных и выполняет первое чтение из входного потока для инициализации члена данных кэшированного значения.
4) Создает копию other . Если std:: is_trivially_copy_constructible < T > :: value равно true , этот конструктор копирования является тривиальным конструктором копирования. (начиная с C++11)

Параметры

stream - поток для инициализации istream_iterator
other - другой istream_iterator того же типа

Пример

#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
int main()
{
    std::istringstream stream("1 2 3 4 5");
    std::copy(
        std::istream_iterator<int>(stream),
        std::istream_iterator<int>(),
        std::ostream_iterator<int>(std::cout, " ")
    );
}

Вывод:

1 2 3 4 5

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение как опубликовано Корректное поведение
LWG 1280 C++98 перегрузка (3) хранила stream напрямую хранит его адрес вместо этого
P0738R2 C++98 первое чтение могло быть отложено до первого разыменования всегда выполняется в конструкторе