std:: make_pair
|
헤더 파일에 정의됨
<utility>
|
||
|
template
<
class
T1,
class
T2
>
std:: pair < T1, T2 > make_pair ( T1 x, T2 y ) ; |
(C++11 이전) | |
|
template
<
class
T1,
class
T2
>
std:: pair < /*V1*/ , /*V2*/ > make_pair ( T1 && x, T2 && y ) ; |
(C++11 이후)
(C++14부터 constexpr) (C++20 이전) |
|
|
template
<
class
T1,
class
T2
>
constexpr
std::
pair
<
std::
unwrap_ref_decay_t
<
T1
>
,
|
(C++20 이후) | |
인수의 타입들로부터 대상 타입을 추론하여 std::pair 객체를 생성합니다.
|
주어진 타입
std::
decay
<
T1
>
::
type
을
|
(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 타입이어서
배열 전달이 불가능했음 |
이러한 타입들을
값 타입으로 변경함 |