Espacios de nombres
Variantes
Acciones

std::make_tuple

De cppreference.com
< cpp‎ | utility‎ | tuple
 
 
Biblioteca de servicios
 
std::tuple
Funciones miembro
Funciones no miembro
make_tuple
(hasta C++20)(hasta C++20)(hasta C++20)(hasta C++20)(hasta C++20)(C++20)
Guías de deducción(C++17)
Clases asistentes
 
Definido en el archivo de encabezado <tuple>
template< class... Types >
tuple<VTypes...> make_tuple( Types&&... args );
(desde C++11)
(constexpr desde C++14)

Crea un objeto tupla, deduciendo el tipo destino de los tipos de los argumentos.

Para cada Ti en Types..., el tipo correspondiente Vi en VTypes... es std::decay<Ti>::type a menos que la aplicación de std::decay resulte en std::reference_wrapper<X> para algún tipo X, en cuyo caso el tipo deducido es X&.

Contenido

[editar] Parámetros

args - Cero o más argumentos de los cuales construir la tupla.

[editar] Valor de retorno

Un objeto std::tuple que contiene los valores dados, creado como si lo fuera mediante std::tuple<VTypes...>(std::forward<Types>(t)...).

[editar] Posible implementación

template <class T>
struct unwrap_refwrapper
{
    using type = T;
};
 
template <class T>
struct unwrap_refwrapper<std::reference_wrapper<T>>
{
    using type = T&;
};
 
template <class T>
using special_decay_t = typename unwrap_refwrapper<typename std::decay<T>::type>::type;
 
template <class... Types>
auto make_tuple(Types&&... args)
{
    return std::tuple<special_decay_t<Types>...>(std::forward<Types>(args)...);
}

[editar] Ejemplo

#include <iostream>
#include <tuple>
#include <functional>
 
std::tuple<int, int> f() // esta función devuelve múltiples valores
{
    int x = 5;
    return std::make_tuple(x, 7); // devuelve {x,7}; en C++17
}
 
int main()
{
    // construcción de tupla heterogénea
    int n = 1;
    auto t = std::make_tuple(10, "Prueba", 3.14, std::ref(n), n);
    n = 7;
    std::cout << "el valor de t es"  << "("
              << std::get<0>(t) << ", " << std::get<1>(t) << ", "
              << std::get<2>(t) << ", " << std::get<3>(t) << ", "
              << std::get<4>(t) << ")\n";
 
    // función que devuelve múltiples valores
    int a, b;
    std::tie(a, b) = f();
    std::cout << a << " " << b << "\n";
}

Salida:

el valor de t es (10, Test, 3.14, 7, 1)
5 7

[editar] Véase también

Crea una tupla de referencias lvalue o desempaca una tupla en objetos individuales.
(plantilla de función) [editar]
Crea una tupla de referencias r-valor.
(plantilla de función) [editar]
Crea una tupla mediante la concatenación de cualquier número de tuplas.
(plantilla de función) [editar]
(C++17)
Llama a una función con una tupla de argumentos.
(plantilla de función) [editar]