Archivo de encabezado de la biblioteca estándar <tuple>
De cppreference.com
Este archivo de encabezado es parte de la bitlioteca de utilidades generales.
Incluye | ||
<compare>(desde C++20) |
Clases | |
(C++11) | Implementa un contenedor de tamaño fijo, que contiene elementos de tipos posiblemente diferentes. (plantilla de clase) |
Obtiene el tamaño de una tupla en tiempo de compilación. (especialización de plantilla de clase) | |
Obtiene el tipo del elemento especificado. (especialización de plantilla de clase) | |
Especializa el rasgo de tipo std::uses_allocator. (especialización de plantilla de clase) | |
Constantes | |
Marcador de posición para saltarse un elemento cuando se desempaca una tupla utilizando tie. (constante) | |
Funciones | |
Crea un objeto de tupla del tipo definido por los tipos de argumentos. (plantilla de función) | |
Crea una tupla de referencias lvalue o desempaca una tupla en objetos individuales. (plantilla de función) | |
Crea una tupla de referencias r-valor. (plantilla de función) | |
Crea una tupla mediante la concatenación de cualquier número de tuplas. (plantilla de función) | |
La tupla accede al elemento especificado. (plantilla de función) | |
Compara lexicográficamente los valores de la tupla (plantilla de función) | |
(C++11) | Especializa el algoritmo std::swap. (plantilla de función) |
(C++17) | Llama a una función con una tupla de argumentos. (plantilla de función) |
(C++17) | Construye un objeto con una tupla de argumentos. (plantilla de función) |
[editar]Sinopsis
#include <compare> namespace std {// plantilla de clase tupletemplate<class... Types>class tuple; // funciones de creación de tuplasinlineconstexpr/* no especificado */ ignore; template<class... TTypes>constexpr tuple<unwrap_ref_decay_t<TTypes>...> make_tuple(TTypes&&...); template<class... TTypes>constexpr tuple<TTypes&&...> forward_as_tuple(TTypes&&...)noexcept; template<class... TTypes>constexpr tuple<TTypes&...> tie(TTypes&...)noexcept; template<class... Tuples>constexpr tuple<CTypes...> tuple_cat(Tuples&&...); // llamada a una función con una tupla de argumentostemplate<class F, class Tuple>constexpr decltype(auto) apply(F&& f, Tuple&& t); template<class T, class Tuple>constexpr T make_from_tuple(Tuple&& t); // clases asistentes de tuplastemplate<class T>struct tuple_size;// no definidotemplate<class T>struct tuple_size<const T>; template<class... Types>struct tuple_size<tuple<Types...>>; template<size_t I, class T>struct tuple_element;// no definidotemplate<size_t I, class T>struct tuple_element<I, const T>; template<size_t I, class... Types>struct tuple_element<I, tuple<Types...>>; template<size_t I, class T>using tuple_element_t =typename tuple_element<I, T>::type; // acceso de elementostemplate<size_t I, class... Types>constexpr tuple_element_t<I, tuple<Types...>>& get(tuple<Types...>&)noexcept;template<size_t I, class... Types>constexpr tuple_element_t<I, tuple<Types...>>&& get(tuple<Types...>&&)noexcept;template<size_t I, class... Types>constexprconst tuple_element_t<I, tuple<Types...>>& get(const tuple<Types...>&)noexcept;template<size_t I, class... Types>constexprconst tuple_element_t<I, tuple<Types...>>&& get(const tuple<Types...>&&)noexcept;template<class T, class... Types>constexpr T& get(tuple<Types...>& t)noexcept;template<class T, class... Types>constexpr T&& get(tuple<Types...>&& t)noexcept;template<class T, class... Types>constexprconst T& get(const tuple<Types...>& t)noexcept;template<class T, class... Types>constexprconst T&& get(const tuple<Types...>&& t)noexcept; // operadores relacionalestemplate<class... TTypes, class... UTypes>constexprbool operator==(const tuple<TTypes...>&, const tuple<UTypes...>&);template<class... TTypes, class... UTypes>constexpr common_comparison_category_t</*resultado de tres vías sintetizado*/<TTypes, UTypes>...> operator<=>(const tuple<TTypes...>&, const tuple<UTypes...>&); // rasgos relacionados con asignadores de memoriatemplate<class... Types, class Alloc>struct uses_allocator<tuple<Types...>, Alloc>; // algoritmos especializadostemplate<class... Types>constexprvoid swap(tuple<Types...>& x, tuple<Types...>& y)noexcept(/* véase descripción */); // clases asistentes de tuplastemplate<class T>inlineconstexpr size_t tuple_size_v = tuple_size<T>::value;} // en desusonamespace std {template<class T>class tuple_size<volatile T>;template<class T>class tuple_size<constvolatile T>; template<size_t I, class T>class tuple_element<I, volatile T>;template<size_t I, class T>class tuple_element<I, constvolatile T>;}
[editar]Plantilla de clase std::tuple
namespace std {template<class... Types>class tuple {public:// construcción de tuplasconstexprexplicit(/* véase descripción */) tuple();constexprexplicit(/* véase descripción */) tuple(const Types&...);// solamente si sizeof...(Types) >= 1template<class... UTypes>constexprexplicit(/* véase descripción */) tuple(UTypes&&...);// solamente si sizeof...(Types) >= 1 tuple(const tuple&)=default; tuple(tuple&&)=default; template<class... UTypes>constexprexplicit(/* véase descripción */) tuple(const tuple<UTypes...>&);template<class... UTypes>constexprexplicit(/* véase descripción */) tuple(tuple<UTypes...>&&); template<class U1, class U2>constexprexplicit(/* véase descripción */) tuple(const pair<U1, U2>&);// solamente si sizeof...(Types) == 2template<class U1, class U2>constexprexplicit(/* véase descripción */) tuple(pair<U1, U2>&&);// solamente si sizeof...(Types) == 2 // constructores extendidos con asignadores de memoriatemplate<class Alloc>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a);template<class Alloc>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a, const Types&...);template<class Alloc, class... UTypes>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a, UTypes&&...);template<class Alloc>constexpr tuple(allocator_arg_t, const Alloc& a, const tuple&);template<class Alloc>constexpr tuple(allocator_arg_t, const Alloc& a, tuple&&);template<class Alloc, class... UTypes>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a, const tuple<UTypes...>&);template<class Alloc, class... UTypes>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a, tuple<UTypes...>&&);template<class Alloc, class U1, class U2>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&);template<class Alloc, class U1, class U2>constexprexplicit(/* véase descripción */) tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&&); // asignación de tuplasconstexpr tuple& operator=(const tuple&);constexpr tuple& operator=(tuple&&)noexcept(/* véase descripción */); template<class... UTypes>constexpr tuple& operator=(const tuple<UTypes...>&);template<class... UTypes>constexpr tuple& operator=(tuple<UTypes...>&&); template<class U1, class U2>constexpr tuple& operator=(const pair<U1, U2>&);// solamente si sizeof...(Types) == 2template<class U1, class U2>constexpr tuple& operator=(pair<U1, U2>&&);// solamente si sizeof...(Types) == 2 // intercambio de tuplasconstexprvoid swap(tuple&)noexcept(/* véase descripción */);}; template<class... UTypes> tuple(UTypes...)-> tuple<UTypes...>;template<class T1, class T2> tuple(pair<T1, T2>)-> tuple<T1, T2>;template<class Alloc, class... UTypes> tuple(allocator_arg_t, Alloc, UTypes...)-> tuple<UTypes...>;template<class Alloc, class T1, class T2> tuple(allocator_arg_t, Alloc, pair<T1, T2>)-> tuple<T1, T2>;template<class Alloc, class... UTypes> tuple(allocator_arg_t, Alloc, tuple<UTypes...>)-> tuple<UTypes...>;}