Spec-Zone.ru › C++

std::make_pair

Определено в заголовке <utility>
template< class T1, class T2 >
std::pair<T1, T2> make_pair( T1 t, T2 u );
(до C++11)
template< class T1, class T2 >
std::pair<V1, V2> make_pair( T1&& t, T2&& u );
(с C++11)
(до C++14)
template< class T1, class T2 >
constexpr std::pair<V1, V2> make_pair( T1&& t, T2&& u );
(с C++14)

Создаёт объект std::pair, выводя тип целевого объекта из типов аргументов.

Выведенные типы V1 и V2 являются std::decay<T1>::type и std::decay<T2>::type (обычные преобразования типов, применяемые к аргументам функций, передаваемых по значению), если применение std::decay приводит к std::reference_wrapper<X> для некоторого типа X, в этом случае выведенный тип является X&.

(с C++11)

Параметры

t, u - значения для создания пары

Возвращаемое значение

Объект std::pair содержащий заданные значения.

Пример

#include <iostream>
#include <utility>
#include <functional>
 
int main()
{
    int n = 1;
    int a[5] = {1, 2, 3, 4, 5};
 
    // build a pair from two ints
    auto p1 = std::make_pair(n, a[1]);
    std::cout << "The value of p1 is "
              << "(" << p1.first << ", " << p1.second << ")\n";
 
    // build a pair from a reference to int and an array (decayed to pointer)
    auto p2 = std::make_pair(std::ref(n), a);
    n = 7;
    std::cout << "The value of p2 is "
              << "(" << p2.first << ", " << *(p2.second + 2) << ")\n";
}

Вывод:

The value of p1 is (1, 2)
The value of p2 is (7, 3)

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Правильное поведение
LWG 181 C++98 типы параметров были типами константных ссылок,
что делало передачу массивов невозможной
изменены на типы значений

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/pair/make_pair

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API