|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20) | ||||
| Helper concepts | ||||
(C++23) | ||||
| Helper classes | ||||
tuple_size<std::tuple> | ||||
(C++23) | ||||
(C++23) | ||||
| Deduction guides(C++17) |
Defined in header <tuple> | ||
template<class...Types> struct tuple_size<std::tuple<Types...>> | (since C++11) | |
Provides access to the number of elements in a tuple as a compile-time constant expression.
Contents |
template<class T> constexprstd::size_t tuple_size_v= tuple_size<T>::value; | (since C++17) | |
value [static] | sizeof...(Types)(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> template<class T>void test(T value){int a[std::tuple_size_v<T>];// can be used at compile time std::cout<<std::tuple_size<T>{}<<' '// or at run time<< sizeof a<<' '<< sizeof value<<'\n';} int main(){ test(std::make_tuple(1,2,3.14));}
Possible output:
3 12 16
| 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 apair(class template specialization)[edit] |
(C++11) | obtains the size of anarray(class template specialization)[edit] |
| obtains the size of astd::ranges::subrange (class template specialization)[edit] | |
(C++11) | tuple accesses specified element (function template)[edit] |