| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Iterator operations | ||||
| Deduction guides | ||||
| Non-member functions | ||||
get(std::ranges::subrange) | ||||
| Helper types | ||||
Defined in header <ranges> | ||
template<std::size_t N,class I,class S,ranges::subrange_kind K> requires((N==0&&std::copyable<I>)|| N==1) | (1) | (since C++20) |
template<std::size_t N,class I,class S,ranges::subrange_kind K> requires(N<2) | (2) | (since C++20) |
namespace std{using ranges::get;} | (3) | (since C++20) |
Providesstructured binding support.
subrange lvalue (or a const rvalue) whenN==0 orN==1, respectively.subrange rvalue.std, which simplifies their usage and makes everysubrange with a copyable iterator apair-like type.Contents |
| r | - | asubrange |
#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}
Output:
-2 -4
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3589 | C++20 | overload(1) copiesbegin_ ifN is0, butI might not modelcopyable | added constraints |
| Structured binding(C++17) | binds the specified names to sub-objects or tuple elements of the initializer[edit] |
(C++11) | tuple accesses specified element (function template)[edit] |
(C++11) | accesses an element of apair(function template)[edit] |
(C++11) | accesses an element of anarray(function template)[edit] |
(C++17) | reads the value of the variant given the index or the type (if the type is unique), throws on error (function template)[edit] |
(C++26) | obtains a reference to real or imaginary part from astd::complex (function template)[edit] |