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 , если таковой имеется. Программа может специализировать 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 .

Вариации неявных выражений

Выражение requires expression , использующее выражение, которое является немодифицирующим для некоторого константного lvalue операнда, также требует неявных вариаций выражений .

Пример

Смотрите также

определяет, что semiregular тип может быть инкрементирован с помощью пре- и постинкрементных операторов
(концепт)
вычисляет ассоциированные типы итератора
(псевдоним шаблона)
предоставляет унифицированный интерфейс к свойствам итератора
(шаблон класса)