std::incrementable_traits<std::common_iterator>
From cppreference.com
< cpp | iterator | common iterator
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Iterator library
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)(C++20)(C++23)(C++20)(C++20)
(deprecated in C++17)
(C++20)
(C++20)
(C++20)(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++20)(C++20)
(C++20)(C++20)
(C++20)
(C++20)
(C++20)
(C++23)
(C++23)
(C++23)
(C++23)
(C++23)
(C++11)(C++14)
(C++14)(C++14)
std::common_iterator
(C++20)
(C++20)
(C++20)
(C++20)
incrementable_traits<std::common_iterator>
(C++20)
Defined in header
<iterator>
template< class I, class S >
(since C++20)
struct incrementable_traits<std::common_iterator <I, S>> {
using difference_type = std::iter_difference_t <I>;
Provides the uniform interface to the associated difference type of the std::common_iterator type.
[edit] Example
Run this code
#include <cstddef> #include <iterator> #include <list> #include <string> #include <type_traits> int main() { using CI = std::common_iterator < std::counted_iterator <int*>, std::default_sentinel_t >; using CL = std::common_iterator < std::counted_iterator <std::list <std::string >::iterator>, std::default_sentinel_t >; CL cl{std::default_sentinel }; static_assert( std::same_as <std::incrementable_traits <CI>::difference_type, std::ptrdiff_t > && std::same_as <std::incrementable_traits <CL>::difference_type, std::ptrdiff_t > && std::same_as <std::incrementable_traits <decltype(cl)>::difference_type, std::ptrdiff_t >); }
[edit] See also
(C++20)(C++20)(C++23)(C++20)(C++20)(C++20)
(alias template)[edit]
provides uniform interface to the properties of the std::common_iterator type
(class template specialization) [edit]
(class template specialization) [edit]