make_pair
Функция шаблона, которую можно использовать для построения объектов типа pair, где типы компонентов автоматически выбираются на основе типов данных, переданных в качестве параметров.
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
Значение, которое инициализирует первый элемент pair.Val2
Значение, которое инициализирует второй элемент pair.
Возвращаемое значение
Создаваемый парный объект: pair < Type1, Type2 > (Val1, Val2).
Заметки
make_pair преобразует объект типа Класс reference_wrapper в типы ссылки, а убывающие массивы и функции — в указатели.
В возвращенном объекте pair Type1 определяется следующим образом:
Если тип ввода Type1 имеет значение reference_wrapper<X>, возвращаемый тип Type1 имеет значение X&.
В противном случае возвращаемый тип Type1 имеет значение decay<Type1>::type. Если Класс decay не поддерживается, то возвращаемый тип Type1 совпадает с типом ввода Type1.
Возвращаемый тип Type2 аналогичным образом определяется по типу ввода Type2.
Одно из преимуществ make_pair заключается в том, что сохраненные типы объектов автоматически определяются компилятором, и их не требуется задавать явным образом. Не используйте явные аргументы шаблона, например make_pair<int, int>(1, 2), при использовании make_pair, так как для них характерна избыточная подробность, которая создает дополнительные проблемы со сложными ссылками rvalue, способные вызвать сбой компиляции. В данном случае правильный синтаксис — make_pair(1, 2)
Вспомогательная функция make_pair также предоставляет возможность передать два значения в функцию, которой в качестве параметра ввода требуется пара.
Пример
Пример использования вспомогательной функции make_pair для объявления и инициализации пары см. в разделе Структура pair.
Требования
Заголовок: <utility>
Пространство имен: std