|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
(C++11) | ||||
| Non-member functions | ||||
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20) | ||||
(C++11) | ||||
(C++11) | ||||
| Helper classes | ||||
tuple_size<std::pair> (C++11) | ||||
(C++11) | ||||
(C++23) | ||||
(C++23) | ||||
(C++11) | ||||
| Deduction guides(C++17) |
Defined in header <utility> | ||
template<class T1,class T2> struct tuple_size<std::pair<T1, T2>> | (since C++11) | |
The partial specialization ofstd::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.
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 <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 timestd::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:
32
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 forpair were not required to be derived fromintegral_constant | required |
| 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 anarray(class template specialization)[edit] |
(C++11) | obtains the size of a |
| obtains the size of astd::ranges::subrange (class template specialization)[edit] | |
obtains the type of the elements ofpair(class template specialization)[edit] |