table of contents
        
      
      
    | std::tuple_size(3) | C++ Standard Libary | std::tuple_size(3) | 
NAME¶
std::tuple_size - std::tuple_size
Synopsis¶
 Defined in header <utility>
  
   template <class T1, class T2>
  
   struct tuple_size<std::pair<T1, T2>> (since C++11)
  
   : std::integral_constant<std::size_t, 2> { };
  
   The partial specialization of std::tuple_size for pairs provides a
    compile-time way
  
   to obtain the number of elements in a pair, which is always 2, using
    tuple-like
  
   syntax.
Inherited from std::integral_constant
Member constants¶
 value the constant value 2
  
   [static] (public static member constant)
Member functions¶
 operator std::size_t converts the object to std::size_t, returns
    value
  
   (public member function)
  
   operator() returns value
  
   (C++14) (public member function)
Member types¶
 Type Definition
  
   value_type std::size_t
  
   type std::integral_constant<std::size_t, value>
Example¶
// Run this code
  
   #include <iostream>
  
   #include <utility>
  
   #include <tuple>
  
   template<class T>
  
   void test(T t)
  
   {
  
   int a[std::tuple_size<T>::value]; // can be used at compile time
  
   std::cout << std::tuple_size<T>::value << '\n'; // or at
    run time
  
   }
  
   int main()
  
   {
  
   test(std::make_tuple(1, 2, 3.14));
  
   test(std::make_pair(1, 3.14));
  
   }
Output:¶
 3
  
   2
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   LWG 2313 C++11 specializations for pair were not required to required
  
   be derived from integral_constant
See also¶
 Structured binding (C++17) binds the specified names to
    sub-objects or tuple
  
   elements of the initializer
  
   std::tuple_size<std::tuple> obtains the size of tuple at compile time
  
   (C++11) (class template specialization)
  
   std::tuple_size<std::array> obtains the size of an array
  
   (C++11) (class template specialization)
  
   std::tuple_element<std::pair> obtains the type of the elements of pair
  
   (C++11) (class template specialization)
| 2022.07.31 | http://cppreference.com |