FreeBSD Manual Pages
std::tuple(3) C++ Standard Libary std::tuple(3) NAME std::tuple - std::tuple Synopsis Defined in header <tuple> template< class... Types > (since C++11) class tuple; Class template std::tuple is a fixed-size collection of heteroge- neous values. It is a generalization of std::pair. If std::is_trivially_destructible<Ti>::value is true for every Ti in Types, the destructor of tuple is trivial. Template parameters Types... - the types of the elements that the tuple stores. Empty list is supported. Member functions constructor constructs a new tuple (C++11) (public member function) operator= assigns the contents of one tuple to another (C++11) (public member function) swap swaps the contents of two tuples (C++11) (public member function) Non-member functions make_tuple creates a tuple object of the type defined by the argument (C++11) types (function template) tie creates a tuple of lvalue references or un- packs a tuple into (C++11) individual objects (function template) forward_as_tuple creates a tuple of forwarding references (C++11) (function template) tuple_cat creates a tuple by concatenating any number of tuples (C++11) (function template) std::get(std::tuple) tuple accesses specified element (C++11) (function template) operator== operator!= operator< operator<= operator> operator>= lexicographically compares the values in the tuple operator<=> (function template) (removed in C++20) (removed in C++20) (removed in C++20) (removed in C++20) (removed in C++20) (C++20) std::swap(std::tuple) specializes the std::swap algorithm (C++11) (function template) Helper classes std::tuple_size<std::tuple> obtains the size of tuple at compile time (C++11) (class template specializa- tion) std::tuple_element<std::tuple> obtains the type of the specified element (C++11) (class template specializa- tion) std::uses_allocator<std::tuple> specializes the std::uses_allocator type (C++11) trait (class template specializa- tion) std::basic_common_reference<tuple-like> determines the common refer- ence type of a (C++23) tuple and a tuple-like type (class template specializa- tion) std::common_type<tuple-like> determines the common type of a tuple and a (C++23) tuple-like type (class template specializa- tion) ignore placeholder to skip an ele- ment when (C++11) unpacking a tuple using tie (constant) Deduction guides (since C++17) Notes Until N4387 (applied as a defect report for C++11), a function could not return a tuple using copy-list-initialization: std::tuple<int, int> foo_tuple() { return {1, -1}; // Error until N4387 return std::tuple<int, int>{1, -1}; // Always works return std::make_tuple(1, -1); // Always works } Example // Run this code #include <tuple> #include <iostream> #include <string> #include <stdexcept> std::tuple<double, char, std::string> get_student(int id) { if (id == 0) return std::make_tuple(3.8, 'A', "Lisa Simpson"); if (id == 1) return std::make_tuple(2.9, 'C', "Milhouse Van Houten"); if (id == 2) return std::make_tuple(1.7, 'D', "Ralph Wiggum"); throw std::invalid_argument("id"); } int main() { auto student0 = get_student(0); std::cout << "ID: 0, " << "GPA: " << std::get<0>(student0) << ", " << "grade: " << std::get<1>(student0) << ", " << "name: " << std::get<2>(student0) << '\n'; double gpa1; char grade1; std::string name1; std::tie(gpa1, grade1, name1) = get_student(1); std::cout << "ID: 1, " << "GPA: " << gpa1 << ", " << "grade: " << grade1 << ", " << "name: " << name1 << '\n'; // C++17 structured binding: auto [ gpa2, grade2, name2 ] = get_student(2); std::cout << "ID: 2, " << "GPA: " << gpa2 << ", " << "grade: " << grade2 << ", " << "name: " << name2 << '\n'; } Output: ID: 0, GPA: 3.8, grade: A, name: Lisa Simpson ID: 1, GPA: 2.9, grade: C, name: Milhouse Van Houten ID: 2, GPA: 1.7, grade: D, name: Ralph Wiggum Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior LWG 2796 C++11 triviality of the destructor of tuple was specified unspecified References * C++20 standard (ISO/IEC 14882:2020): * 20.5 Tuples [tuple] * C++17 standard (ISO/IEC 14882:2017): * 23.5 Tuples [tuple] * C++14 standard (ISO/IEC 14882:2014): * 20.4 Tuples [tuple] * C++11 standard (ISO/IEC 14882:2011): * 20.4 Tuples [tuple] See also pair implements binary tuple, i.e. a pair of values (class template) http://cppreference.com 2022.07.31 std::tuple(3)
NAME | Synopsis | Template parameters | Member functions | Non-member functions | Helper classes | Notes | Example | Output: | References | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::tuple&sektion=3&manpath=FreeBSD+Ports+15.0>
