A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/algorithm/../ranges/../iterator/incrementable_traits.html below:

std::incrementable_traits - cppreference.com

template< class I >
struct incrementable_traits {};

(1) (since C++20) template< class T >

    requires std::is_object_v<T>

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

struct incrementable_traits<const T>

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

    requires requires { typename T::difference_type; }

struct incrementable_traits<T>;
(4) (since 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) (since 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.

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.

[edit] Implicit expression variations

A requires expression that uses an expression that is non-modifying for some constant lvalue operand also requires implicit expression variations.

[edit] Example [edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4