nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator
cppreference.net에서
template< class I >
concept /*nothrow-input-iterator*/ =
std::input_iterator<I> &&
std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>,
std::iter_value_t<I>>;
|
(1) | (설명 전용*) |
template< class I >
concept /*nothrow-forward-iterator*/ =
/*nothrow-input-iterator*/<I> &&
std::forward_iterator<I> &&
/*nothrow-sentinel-for*/<I, I>;
|
(2) | (설명 전용*) |
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
/*nothrow-forward-iterator*/<I> &&
std::bidirectional_iterator<I>;
|
(3) | (C++26부터) (설명 전용*) |
template< class I >
concept /*nothrow-random-access-iterator*/ =
/*nothrow-bidirectional-iterator*/<I> &&
std::random_access_iterator<I> &&
/*nothrow-sized-sentinel-for*/<I, I>;
|
(4) | (C++26부터) (설명 전용*) |
이러한 설명 전용 개념들은 특수화된 <memory> 알고리즘이 반복자에 대해 요구하는 연산에서 예외가 발생하지 않음을 지정합니다.
/*nothrow-sentinel-for*/과 /*nothrow-sized-sentinel-for*/의 정의는 이 페이지를 참조하십시오.
의미론적 요구 사항
1) 유형
I이 nothrow-input-iterator를 모델링하는 경우는 I 유형의 유효한 반복자에 대한 증가, 복사 생성, 이동 생성, 복사 할당, 이동 할당 또는 역참조에서 예외가 발생하지 않을 때만입니다.3) 유형
I이 nothrow-bidirectional-iterator를 모델링하는 경우는 I 유형의 유효한 반복자를 감소시킬 때 예외가 발생하지 않을 때만입니다.4) 유형
I이 nothrow-random-access-iterator를 모델링하는 경우는 I 유형의 유효한 반복자 비교, 또는 -, +, -=, +=, [] 연산자를 I 및 std::iter_difference_t<I> 유형의 유효한 값에 대해 사용할 때 예외가 발생하지 않을 때만입니다.참고
이 개념들은 반복자에 대한 일부 연산에서 예외가 발생하는 것을 허용합니다.
같이 보기
(C++20) |
유형이 입력 반복자임을 지정합니다. 즉, 참조된 값을 읽을 수 있고 전위 및 후위 증가가 모두 가능합니다. (컨셉) |
(C++20) |
input_iterator가 전방 반복자임을 지정합니다. 동등 비교 및 다중 패스를 지원합니다. (컨셉) |
(C++20) |
forward_iterator가 양방향 반복자임을 지정합니다. 뒤로 이동을 지원합니다. (컨셉) |
(C++20) |
bidirectional_iterator가 임의 접근 반복자임을 지정합니다. 상수 시간 전진 및 첨자 연산을 지원합니다. (컨셉) |