std::ranges:: get (std::ranges::subrange)
|
Определено в заголовочном файле
<ranges>
|
||
|
template
<
std::
size_t
N,
class
I,
class
S,
ranges::
subrange_kind
K
>
требует
(
(
N
==
0
&&
std::
copyable
<
I
>
)
||
N
==
1
)
|
(1) | (начиная с C++20) |
|
template
<
std::
size_t
N,
class
I,
class
S,
ranges::
subrange_kind
K
>
требует
(
N
<
2
)
|
(2) | (начиная с C++20) |
|
namespace
std
{
using
ranges
::
get
;
}
|
(3) | (начиная с C++20) |
Обеспечивает поддержку structured binding .
subrange
lvalue (или const rvalue), когда
N
==
0
или
N
==
1
соответственно.
subrange
rvalue.
std
, что упрощает их использование и делает каждый
subrange
с копируемым итератором
pair-like
типом.
Содержание |
Параметры
| 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3589 | C++20 |
overload
(
1
)
copies
begin_
if
N
is
0
, but
I
might not model
copyable
|
added constraints |
Смотрите также
| Structured binding (C++17) | связывает указанные имена с подобъектами или элементами кортежа инициализатора |
|
(C++11)
|
доступ к указанному элементу кортежа
(function template) |
|
(C++11)
|
доступ к элементу
pair
(function template) |
|
(C++11)
|
доступ к элементу
array
(function template) |
|
(C++17)
|
читает значение варианта по индексу или типу (если тип уникален), генерирует исключение при ошибке
(function template) |
|
(C++26)
|
получает ссылку на действительную или мнимую часть из
std::complex
(function template) |