no-throw-input-iterator , no-throw-forward-iterator , no-throw-sentinel-for , no-throw-input-range , no-throw-forward-range
|
template
<
class
I
>
концепция no
-
throw
-
input
-
iterator
=
|
(1) | ( только для демонстрации* ) |
|
template
<
class
I
>
концепт no
-
throw
-
forward
-
iterator
=
|
(2) | ( только для демонстрации* ) |
|
template
<
class
S,
class
I
>
concept no - throw - sentinel - for = std:: sentinel_for < S, I > ; |
(3) | ( только для демонстрации* ) |
|
template
<
class
R
>
концепт no
-
throw
-
input
-
range
=
|
(4) | ( только для демонстрации* ) |
|
template
<
class
R
>
concept no
-
throw
-
forward
-
range
=
|
(5) | ( только для демонстрации* ) |
Эти исключительно экспозиционные концепции указывают, что никакие исключения не выбрасываются операциями, требуемыми алгоритмами для итераторов, дозорных и диапазонов.
no-throw-input-iterator
требует, чтобы разыменование итератора давало lvalue, как у
contiguous_iterator
и
LegacyForwardIterator
.
Семантические требования
Как и все стандартные концепты, каждый концепт, перечисленный здесь, моделируется только в том случае, если все концепты, которые он подразумевает, также моделируются.
I
моделирует
no-throw-input-iterator
только в том случае, если при инкременте, копирующем конструировании, перемещающем конструировании, копирующем присваивании, перемещающем присваивании или разыменовании корректных итераторов не выбрасываются исключения.
S
и
I
моделируют
no-throw-sentinel-for
только если никакие исключения не выбрасываются при копирующем конструировании, перемещающем конструировании, копирующем присваивании, перемещающем присваивании или сравнениях между корректными значениями типа
I
и
S
.
R
моделирует
no-throw-input-range
только если никакие исключения не выбрасываются при вызовах
ranges::
begin
и
ranges::
end
для объекта типа
R
.
Примечания
Эти концепции позволяют некоторым операциям с итераторами и sentinels вызывать исключения, например, операции с невалидными значениями.
Смотрите также
|
(C++20)
|
определяет, что тип является итератором ввода, то есть его ссылочные значения могут быть прочитаны и он может быть как пре-, так и постинкрементирован
(concept) |
|
(C++20)
|
определяет, что
input_iterator
является прямым итератором, поддерживающим сравнение на равенство и многопроходность
(concept) |
|
(C++20)
|
определяет, что тип является стражем для типа
input_or_output_iterator
(concept) |
|
(C++20)
|
определяет диапазон, тип итератора которого удовлетворяет
input_iterator
(concept) |
|
(C++20)
|
определяет диапазон, тип итератора которого удовлетворяет
forward_iterator
(concept) |