std:: tuple_element <std::ranges::subrange>
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Iterator operations | ||||
| Deduction guides | ||||
| Non-member functions | ||||
| Helper types | ||||
|
tuple_element
<std::ranges::subrange>
|
|
Definido en el encabezado
<ranges>
|
||
|
template
<
class
I,
class
S,
ranges::
subrange_kind
K
>
struct tuple_element < 0 , ranges:: subrange < I, S, K >> ; |
(1) | (desde C++20) |
|
template
<
class
I,
class
S,
ranges::
subrange_kind
K
>
struct tuple_element < 0 , const ranges:: subrange < I, S, K >> ; |
(2) | (desde C++20) |
|
template
<
class
I,
class
S,
ranges::
subrange_kind
K
>
struct tuple_element < 1 , ranges:: subrange < I, S, K >> ; |
(3) | (desde C++20) |
|
template
<
class
I,
class
S,
ranges::
subrange_kind
K
>
struct tuple_element < 1 , const ranges:: subrange < I, S, K >> ; |
(4) | (desde C++20) |
Las especializaciones parciales de
std::tuple_element
para
std::ranges::subrange
proporcionan acceso en tiempo de compilación al tipo de iterador o centinela de un
subrange
, utilizando sintaxis tipo tupla. Se proporcionan para soportar el enlace estructurado.
I
.
S
.
Contenidos |
Tipos de miembros
| Tipo de miembro | Definición |
type
|
(1,2)
I
(3,4)
S
|
Notas
Como las funciones
get
para
subrange
retornan iteradores y sentinelas por valor,
const
no se añade el calificador al tipo de resultado cuando el
subrange
está calificado como const (pero no calificado como volatile).
Si el
subrange
está calificado como volátil, los tipos resultantes también están calificados como volátiles porque se utilizan las especializaciones parciales para tipos volátiles o const volátiles. Este uso está obsoleto.
Ejemplo
#include <iterator> #include <list> #include <ranges> #include <type_traits> int main() { std::list<int> list{3, 1, 4, 1, 5, 9, 2, 6}; std::ranges::subrange subrange { std::counted_iterator{std::begin(list), 4}, std::default_sentinel }; static_assert( std::is_same_v< std::tuple_element_t<0, decltype(subrange)>, // tipo definido por la implementación: std::counted_iterator<std::_List_iterator<int>> >); static_assert( std::is_same_v< std::tuple_element_t<1, decltype(subrange)>, std::default_sentinel_t >); }
Véase también
| Structured binding (C++17) | vincula los nombres especificados a subobjetos o elementos de tupla del inicializador |
|
(C++11)
|
obtiene los tipos de elemento de un tipo similar a tupla
(plantilla de clase) |
|
obtiene el tamaño de un
std::ranges::subrange
(especialización de plantilla de clase) |