std::incrementable_traits
Этот раздел не завершён Причина: tr |
Определено в заголовочном файле <iterator>
|
||
template< class I > struct incrementable_traits {}; |
(1) | (начиная с C++20) |
template< class T > requires std::is_object_v<T> |
(2) | (начиная с C++20) |
template< class T > struct incrementable_traits<const T> |
(3) | (начиная с C++20) |
template< class T > requires requires { typename T::difference_type; } |
(4) | (начиная с C++20) |
template< class T > requires (!requires { typename T::difference_type; }) && |
(5) | (начиная с C++20) |
Computes the associated difference type of the type I
, if any. A program may specialize incrementable_traits
for a program-defined type.
difference_type
same as std::ptrdiff_t.difference_type
.difference_type
same as T::difference_type
.difference_type
but do support subtraction.difference_type
same as std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())>. The implicit expression variations rule (see below) applies to the expression a - b.[править] Варианты неявных выражений
Выражение requires, которое использует выражение, которое не модифицирует для некоторого константного операнда lvalue, также неявно требует дополнительных вариаций этого выражения, которые принимают неконстантное lvalue или (возможно, константное) rvalue для данного операнда, если только такое изменение выражения явно требуется с различной семантикой. Эти вариации неявных выражений должны соответствовать тем же семантическим требованиям, что и объявленное выражение. Степень, в которой реализация проверяет синтаксис вариантов, не определена.
[править] Example
Этот раздел не завершён Причина: нет примера |
[править] See also
(C++20) |
указывает, что тип semiregular может увеличиваться с помощью операторов до и после инкремента (концепт) |
(C++20)(C++20)(C++23)(C++20)(C++20)(C++20) |
вычисляет связанные типы итератора (псевдоним шаблона) |
предоставляет единый интерфейс к свойствам итератора (шаблон класса) |