Namespaces
Variants

std:: incrementable_traits

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
(deprecated in C++17)
incrementable_traits
(C++20)


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)
헤더 파일에 정의됨 <iterator>
template < class I >
struct incrementable_traits { } ;
(1) (C++20부터)
template < class T >

requires std:: is_object_v < T >

struct incrementable_traits < T * > ;
(2) (C++20부터)
template < class T >

struct incrementable_traits < const T >

: incrementable_traits < T > { } ;
(3) (C++20부터)
template < class T >

requires requires { typename T :: difference_type ; }

struct incrementable_traits < T > ;
(4) (C++20부터)
template < class T >

requires ( ! requires { typename T :: difference_type ; } ) &&
requires ( const T & a, const T & b ) { { a - b } - > std:: integral ; }

struct incrementable_traits < T > ;
(5) (C++20부터)

타입 I 의 연관된 차이 유형(difference type)을 계산합니다(존재하는 경우). 프로그램은 프로그램 정의 타입 에 대해 incrementable_traits 를 특수화할 수 있습니다.

1) 기본 템플릿은 빈 구조체입니다.
2) 포인터에 대한 특수화.
멤버 타입 difference_type 을 제공하며, 이는 std::ptrdiff_t 와 동일합니다.
3) const 한정 타입에 대한 특수화.
4) 공개적이고 접근 가능한 멤버 타입 difference_type 을 정의하는 타입들에 대한 특수화.
멤버 타입 difference_type 을 제공하며, 이는 T::difference_type 와 동일합니다.
5) 공개적이고 접근 가능한 멤버 타입 difference_type 을 정의하지 않지만 뺄셈을 지원하는 타입들에 대한 특수화
멤버 타입 difference_type 을 제공하며, 이는 std:: make_signed_t < decltype ( std:: declval < T > ( ) - std:: declval < T > ( ) ) > 와 동일합니다. 암시적 표현 변형 규칙(아래 참조)은 표현식 a - b 에 적용됩니다.

암시적 표현 변형

상수 lvalue 피연산자에 대해 비수정적인 표현식을 사용하는 requires expression 암시적 표현식 변형 도 요구합니다.

예제

참고 항목

semiregular 타입이 전위 및 후위 증가 연산자로 증가될 수 있음을 명시
(concept)
반복자의 연관된 타입들을 계산
(alias template)
반복자의 속성에 대한 통일된 인터페이스를 제공
(class template)