Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

make_pair

A template function that you can use to construct objects of type pair, where the component types are automatically chosen based on the data types that are passed as parameters.

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

Val1

Value that initializes the first element of pair.

Val2

Value that initializes the second element of pair.

The pair object that's constructed: pair<Type1, Type2>(Val1, Val2).

make_pair converts object of type reference_wrapper Class to reference types and converts decaying arrays and functions to pointers.

In the returned pair object, Type1 is determined as follows:

  • If the input type Type1 is reference_wrapper<X>, the returned type Type1 is X&.

  • Otherwise, the returned type Type1 is decay<Type1>::type. If decay Class is not supported, the returned type Type1 is the same as the input type Type1.

The returned type Type2 is similarly determined from the input type Type2.

One advantage of make_pair is that the types of objects that are being stored are determined automatically by the compiler and do not have to be explicitly specified. Don't use explicit template arguments such as make_pair<int, int>(1, 2) when you use make_pair because it is unnecessarily verbose and adds complex rvalue reference problems that might cause compilation failure. For this example, the correct syntax would be make_pair(1, 2)

The make_pair helper function also makes it possible to pass two values to a function that requires a pair as an input parameter.

For an example about how to use the helper function make_pair to declare and initialize a pair, see pair Structure.

Header: <utility>

Namespace: std

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft