std::ranges:: get (std::ranges::subrange)
|
헤더에 정의됨
<ranges>
|
||
|
template
<
std::
size_t
N,
class
I,
class
S,
ranges::
subrange_kind
K
>
requires
(
(
N
==
0
&&
std::
copyable
<
I
>
)
||
N
==
1
)
|
(1) | (C++20부터) |
|
template
<
std::
size_t
N,
class
I,
class
S,
ranges::
subrange_kind
K
>
requires
(
N
<
2
)
|
(2) | (C++20부터) |
|
namespace
std
{
using
ranges
::
get
;
}
|
(3) | (C++20부터) |
구조화된 바인딩 지원을 제공합니다.
subrange
lvalue(또는 const rvalue)에서 반복자 또는 센티널을 획득합니다. 각각
N
==
0
또는
N
==
1
일 때.
subrange
rvalue를 취한다는 점이 다릅니다.
목차 |
매개변수
| r | - |
a
subrange
|
반환값
예제
#include <array> #include <iostream> #include <iterator> #include <ranges> int main() { std::array a{1, -2, 3, -4}; std::ranges::subrange sub_a{std::next(a.begin()), std::prev(a.end())}; std::cout << *std::ranges::get<0>(sub_a) << ' ' // == *(begin(a) + 1) << *std::ranges::get<1>(sub_a) << '\n'; // == *(end(a) - 1) *std::get<0>(sub_a) = 42; // OK // *std::get<2>(sub_a) = 13; // Error: index can only be 0 or 1 }
출력:
-2 -4
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3589 | C++20 |
오버로드
(
1
)
가
begin_
를 복사하지만
N
이
0
일 때
I
가
copyable
를 모델링하지 않을 수 있음
|
제약 조건 추가 |
참고 항목
| Structured binding (C++17) | 지정된 이름들을 초기화자의 부분 객체나 튜플 요소에 바인딩합니다 |
|
(C++11)
|
튜플의 지정된 요소에 접근합니다
(function template) |
|
(C++11)
|
pair
의 요소에 접근합니다
(function template) |
|
(C++11)
|
array
의 요소에 접근합니다
(function template) |
|
(C++17)
|
인덱스나 타입(타입이 고유한 경우)으로 variant의 값을 읽으며, 오류 시 예외를 발생시킵니다
(function template) |
|
(C++26)
|
std::complex
에서 실수부나 허수부에 대한 참조를 얻습니다
(function template) |