Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::tuple_size<std:ranges::subrange>

      From cppreference.com
      <cpp‎ |ranges‎ |subrange
       
       
      Ranges library
      Range adaptors
       
       
      Defined in header<ranges>
      template<class I,class S,ranges::subrange_kind K>

      struct tuple_size<ranges::subrange<I, S, K>>

         :std::integral_constant<std::size_t,2>{};
      (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

      Inherited fromstd::integral_constant

      Member constants

      value
      [static]
      the constant value 2
      (public static member constant)

      Member functions

      operator std::size_t
      converts the object tostd::size_t, returnsvalue
      (public member function)
      operator()
      (C++14)
      returnsvalue
      (public member function)

      Member types

      Type Definition
      value_typestd::size_t
      typestd::integral_constant<std::size_t, value>

      [edit]Example

      Run this code
      #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 }

      [edit]See also

      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]
      obtains the size of

      atuple
      (class template specialization)[edit]

      obtains the size of apair
      (class template specialization)[edit]
      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]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/subrange/tuple_size&oldid=166807"

      [8]ページ先頭

      ©2009-2025 Movatter.jp