home | help
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 com-
     pile-time way
	to obtain the number of elements in a pair, which is always 2, using tu-
     ple-like
	syntax.

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 <tuple>
      #include <utility>

      template<class T>
      void test([[maybe_unused]]T t)
      {
	  [[maybe_unused]]
	  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	retroac-
     tively to
	previously published C++ standards.

	   DR	 Applied to		 Behavior as published		    Cor-
     rect behavior
	LWG  2313 C++11      specializations for pair were not required to   re-
     quired
			    be derived from integral_constant

See also
	Structured binding (C++17)	       binds the specified names to sub-
     objects or
					       tuple elements of the initializer
	tuple_size			       obtains the number of elements of
     a
	(C++11) 			       tuple-like type
					       (class template)
	std::tuple_size<std::array>	       obtains the size of an array
	(C++11) 			       (class template specialization)
	std::tuple_size<std::tuple>	       obtains the size of tuple at com-
     pile time
	(C++11) 			       (class template specialization)
	std::tuple_size<std::ranges::subrange> obtains the number of  components
     of a
	(C++20) 			       std::ranges::subrange
					       (class template specialization)
	std::tuple_element<std::pair>		obtains the type of the elements
     of pair
	(C++11) 			       (class template specialization)

http://cppreference.com 	   2024.06.10		      std::tuple_size(3)

home | help