std:: get (std::tuple)
|
헤더에 정의됨
<tuple>
|
||
|
template
<
std::
size_t
I,
class
...
Types
>
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&
|
(1) |
(C++11부터)
(C++14부터 constexpr) |
|
template
<
std::
size_t
I,
class
...
Types
>
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&&
|
(2) |
(C++11부터)
(C++14부터 constexpr) |
|
template
<
std::
size_t
I,
class
...
Types
>
const
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&
|
(3) |
(C++11부터)
(C++14부터 constexpr) |
|
template
<
std::
size_t
I,
class
...
Types
>
const
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&&
|
(4) |
(C++11부터)
(C++14부터 constexpr) |
|
template
<
class
T,
class
...
Types
>
constexpr T & get ( std:: tuple < Types... > & t ) noexcept ; |
(5) | (C++14 이후) |
|
template
<
class
T,
class
...
Types
>
constexpr T && get ( std:: tuple < Types... > && t ) noexcept ; |
(6) | (C++14부터) |
|
template
<
class
T,
class
...
Types
>
constexpr const T & get ( const std:: tuple < Types... > & t ) noexcept ; |
(7) | (C++14 이후) |
|
template
<
class
T,
class
...
Types
>
constexpr const T && get ( const std:: tuple < Types... > && t ) noexcept ; |
(8) | (C++14 이후) |
[
0
,
sizeof...
(
Types
)
)
범위의 정수 값이어야 합니다.
T
인 요소를 추출합니다. 튜플에 해당 타입의 요소가 정확히 하나만 존재하지 않을 경우 컴파일에 실패합니다.
목차 |
매개변수
| t | - | 내용을 추출할 튜플 |
반환값
선택된 요소에 대한 참조 t .
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_tuples_by_type
|
201304L
|
(C++14) | 타입으로 튜플 접근 ( 5-8 ) |
예제
#include <cassert> #include <iostream> #include <string> #include <tuple> int main() { auto x = std::make_tuple(1, "Foo", 3.14); // 인덱스 기반 접근 std::cout << "( " << std::get<0>(x) << ", " << std::get<1>(x) << ", " << std::get<2>(x) << " )\n"; // 타입 기반 접근 (C++14부터) std::cout << "( " << std::get<int>(x) << ", " << std::get<const char*>(x) << ", " << std::get<double>(x) << " )\n"; const std::tuple<int, const int, double, double> y(1, 2, 6.9, 9.6); const int& i1 = std::get<int>(y); // OK: 모호하지 않음 assert(i1 == 1); const int& i2 = std::get<const int>(y); // OK: 모호하지 않음 assert(i2 == 2); // const double& d = std::get<double>(y); // 오류: 올바르지 않은 형식 (모호함) // 참고: std::tie와 구조화된 바인딩을 사용하여 // 튜플을 개별 객체로 풀 수 있습니다. }
출력:
( 1, Foo, 3.14 ) ( 1, Foo, 3.14 )
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2485 |
C++11 (인덱스 기준)
C++14 (타입 기준) |
const tuple && 에 대한 오버로드가 없음 | 해당 오버로드 추가 ( ( 4 ) 및 ( 8 ) ) |
참고 항목
|
(C++11)
|
array
의 요소에 접근합니다
(function template) |
|
(C++11)
|
pair
의 요소에 접근합니다
(function template) |
|
(C++17)
|
인덱스나 타입(타입이 고유한 경우)을 통해 variant의 값을 읽으며, 오류 시 예외를 발생시킵니다
(function template) |
|
(C++20)
|
std::ranges::subrange
에서 반복자나 센티널을 얻습니다
(function template) |
|
(C++26)
|
std::complex
에서 실수부나 허수부에 대한 참조를 얻습니다
(function template) |
|
(C++11)
|
lvalue 참조의
tuple
을 생성하거나 튜플을 개별 객체로 풀어냅니다
(function template) |
| Structured binding (C++17) | 지정된 이름들을 초기화자의 하위 객체나 튜플 요소에 바인딩합니다 |