GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::tuple(3) C++ Standard Libary std::tuple(3)

std::tuple - std::tuple


Defined in header <tuple>
template< class... Types > (since C++11)
class tuple;


Class template std::tuple is a fixed-size collection of heterogeneous 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.


Types... - the types of the elements that the tuple stores. Empty list is supported.


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)


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 unpacks 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)


std::tuple_size<std::tuple> obtains the size of tuple at compile time
(C++11) (class template specialization)
std::tuple_element<std::tuple> obtains the type of the specified element
(C++11) (class template specialization)
std::uses_allocator<std::tuple> specializes the std::uses_allocator type
(C++11) trait
(class template specialization)
std::basic_common_reference<tuple-like> determines the common reference type of a
(C++23) tuple and a tuple-like type
(class template specialization)
std::common_type<tuple-like> determines the common type of a tuple and a
(C++23) tuple-like type
(class template specialization)
ignore placeholder to skip an element when
(C++11) unpacking a tuple using tie
(constant)


Deduction guides (since C++17)


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
}

// 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';
}


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 retroactively 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


* 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]


pair implements binary tuple, i.e. a pair of values
(class template)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.