make_tuple
De cppreference.com
Sintaxis:
std::tuple<T0,T1,...> make_tuple( const T0 &a0, const T1 &a1, ... );
La función **make_tuple** devuelve un objeto del tipo tuple parametrizado sobre los argumentos que se le entrega, es decir la lista de parámetros a0, a1, .... Así, es una manera expedita de crear una instancia de una tupla sin necesidad de declarar varias veces sus tipos de datos, y saca provecho de la palabra clave auto para declarar una tupla de un tipo automático.
Un ejemplo:
#include <utility> #include <string> using namespace std; int main () { tuple<string, double> tupla1 = make_tuple (string("pi"), 3.1415); '' 1 tuple<int, string, bool> tupla2 = make_tupla( 42, "The answer" , true); '' 2 auto tupla3 = make_tuple( 42, "The answer", false ); '' 3 auto tupla4 = make_tuple( 43, string("Lies!"), false); '' 4 cout << "La segunda tupla tiene elementos:" << "int:"<< get<0>(tupla2) << "string:"<< get<1>(tupla2) << "bool:"<< get<2>(tupla2) << endl; return 0; }
- Aquí se declara el tipo de la tupla explícitamente, y se invoca a los constructores necesarios. El compilador escoge el constructor apropiado.
- Aquí se crea primero una tupla del tipo tuple<int,char*,bool> que es convertida con los constructores de tupla en una tupla tuple<int,string,bool>.
- Aquí la tupla resultante es del tipo tuple<int,char*,bool> y no de tuple<int,string,bool> debido a que char* es un tipo de datos fundamental.
- Aquí la tupla resultante es del tipo tuple<int,string,bool> ya que se invoca explícitamente el constructor que se desea.