| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Iterator operations | ||||
| Deduction guides | ||||
| Non-member functions | ||||
| Helper types | ||||
tuple_size<std::ranges::subrange> | ||||
Defined in header <ranges> | ||
template<class I,class S,ranges::subrange_kind K> struct tuple_size<ranges::subrange<I, S, K>> | (since C++20) | |
The partial specialization ofstd::tuple_size forstd::ranges::subrange provides a compile-time way to obtain the number of components of asubrange, which is always 2, using tuple-like syntax. It is provided for structured binding support.
Contents |
value [static] | the constant value 2 (public static member constant) |
operator std::size_t | converts the object tostd::size_t, returnsvalue (public member function) |
operator() (C++14) | returnsvalue (public member function) |
| Type | Definition |
value_type | std::size_t |
type | std::integral_constant<std::size_t, value> |
#include <array>#include <iostream>#include <iterator>#include <ranges> int main(){ static_assert(2==std::tuple_size_v<std::ranges::subrange<int*,int*>>); using array5=std::array<int,5>; static_assert(2==std::tuple_size<std::ranges::subrange< array5::const_iterator, array5::const_iterator>>{}); constexpr array5 a{1,2,3,4,5}; std::ranges::subrange sub_a1{a}; for(std::cout<<"sub_a1: { ";int e: sub_a1)std::cout<< e<<' ';std::cout<<"}\n"; std::ranges::subrange sub_a2{std::next(cbegin(a)),std::prev(cend(a))}; constauto[first, last]= sub_a2;std::cout<<"sub_a2 size = "<<std::distance(first, last)<<'\n'; for(std::cout<<"sub_a2: { ";int e: sub_a2)std::cout<< e<<' ';std::cout<<"}\n";}
Output:
sub_a1: { 1 2 3 4 5 }sub_a2 size = 3sub_a2: { 2 3 4 }| Structured binding(C++17) | binds the specified names to sub-objects or tuple elements of the initializer[edit] |
(C++11) | obtains the number of elements of a tuple-like type (class template)[edit] |
(C++11) | obtains the size of a |
(C++11) | obtains the size of apair(class template specialization)[edit] |
(C++11) | obtains the size of anarray(class template specialization)[edit] |
| obtains the type of the iterator or the sentinel of astd::ranges::subrange (class template specialization)[edit] |