std::incrementable_traits — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
(1) | (начиная с C++20) |
|
|
(2) | (начиная с C++20) |
|
|
(3) | (начиная с C++20) |
|
|
(4) | (начиная с C++20) |
|
|
(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.
1) Primary template is an empty struct.
2) Specialization for pointers.
Provides a member type difference_type same as std::ptrdiff_t.
3) Specialization for const-qualified types.
4) Specialization for types that define a public and accessible member type difference_type.
Provides a member type difference_type same as T::difference_type.
5) Specialization for types that do not define a public and accessible member type difference_type but do support subtraction.
Provides a member type 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 для данного операнда, если только такое изменение выражения явно требуется с различной семантикой. Эти вариации неявных выражений должны соответствовать тем же семантическим требованиям, что и объявленное выражение. Степень, в которой реализация проверяет синтаксис вариантов, не определена.