std::make_pair
| 헤더 <utility>
|
||
template< class T1, class T2 >
std::pair<T1, T2> make_pair( T1 x, T2 y );
|
에 정의됨 | |
template< class T1, class T2 >
std::pair</*V1*/, /*V2*/> make_pair( T1&& x, T2&& y );
|
(C++11부터) (C++20까지) (C++14부터 constexpr) |
|
template< class T1, class T2 >
constexpr std::pair<std::unwrap_ref_decay_t<T1>,
std::unwrap_ref_decay_t<T2>>
make_pair( T1&& x, T2&& y );
|
(C++20부터) | |
인수 타입에서 대상 타입을 추론하여 std::pair 객체를 생성합니다.
|
타입
|
(C++11부터) (C++20까지) |
매개변수
| x, y | - | 페어를 구성하는 값들 |
반환값
|
std:: pair < T1, T2 > ( x, y ) |
(C++11 이전) |
|
std:: pair < /*V1*/ , /*V2*/ > ( std:: forward < T1 > ( x ) , std:: forward < T2 > ( y ) ) |
(C++11 이후)
(C++20 이전) |
|
std::
pair
<
std::
unwrap_ref_decay_t
<
T1
>
,
std::
unwrap_ref_decay_t
<
T2
>>
|
(C++20 이후) |
예제
#include <functional> #include <iostream> #include <utility> int main() { int n = 1; int a[5] = {1, 2, 3, 4, 5}; // 두 int로부터 pair 생성 auto p1 = std::make_pair(n, a[1]); std::cout << "p1의 값은 " << '(' << p1.first << ", " << p1.second << ")\n"; // int에 대한 참조와 배열(포인터로 붕괴됨)로부터 pair 생성 auto p2 = std::make_pair(std::ref(n), a); n = 7; std::cout << "p2의 값은 " << '(' << 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 |
매개변수 타입이 const-reference 타입이어서
배열 전달이 불가능했음 |
이러한 타입들을
값 타입으로 변경함 |