make_pair
Una función de plantilla que se usa para construir objetos de tipo pair, donde los tipos de componente se eligen automáticamente basándose en los tipos de datos que se pasan como parámetros.
template<class Type1, class Type2> pair<Type1, Type2> make_pair(Type1& Val1, Type2& Val2); template<class Type1, class Type2> pair<Type1, Type2> make_pair(Type1& Val1, Type2&& Val2); template<class Type1, class Type2> pair<Type1, Type2> make_pair(Type1&& Val1, Type2& Val2); template<class Type1, class Type2> pair<Type1, Type2> make_pair(Type1&& Val1, Type2&& Val2);
Parámetros
Val1
Valor que inicializa el primer elemento de pair.Val2
Valor que inicializa el segundo elemento de pair.
Valor devuelto
El objeto con el par que se construye: pair<Type1, Type2>(Val1, Val2).
Comentarios
make_pair convierte el objeto de tipo reference_wrapper (Clase) en tipos de referencia y convierte las matrices y las funciones que decaen en punteros.
En el objeto pair devuelto, Type1 se determina como sigue:
Si el tipo de entrada Type1 es reference_wrapper<X>, el tipo devuelto Type1 es X&.
De lo contrario, el tipo devuelto Type1 es decay<Type1>::type. Si decay (Clase) no se admite, el tipo devuelto Type1 es igual que el tipo de entrada Type1.
El tipo devuelto Type2 se determina de igual forma a partir del tipo de entrada Type2.
Una ventaja de make_pair es que el compilador determina automáticamente los tipos de objetos que se almacenan y no tienen que especificarse explícitamente. No utilice los argumentos de plantilla explícitos como make_pair<int, int>(1, 2) cuando use make_pair porque es innecesariamente detallado y agrega problemas complejos de referencia rvalue que pueden producir un error de compilación. En este ejemplo, la sintaxis correcta sería make_pair(1, 2).
La función auxiliar make_pair también permite pasar dos valores a una función que requiera un par como un parámetro de entrada.
Ejemplo
Para obtener un ejemplo sobre cómo usar la función auxiliar make_pair para declarar e inicializar un par, vea pair Structure.
Requisitos
Encabezado: <utility>
Espacio de nombres: std