std::ranges::borrowed_range, std::ranges::enable_borrowed_range
De cppreference.com
Definido en el archivo de encabezado <ranges> | ||
template<typename R> concept borrowed_range = | (1) | |
Definido en el archivo de encabezado <ranges> | ||
Definido en el archivo de encabezado <span> | ||
Definido en el archivo de encabezado <string_view> | ||
template<typename R> inlineconstexprbool enable_borrowed_range =false; | (2) | |
1) El concepto borrowed_range (rango "prestado") define los requerimientos de un rango tal que una función lo puede tomar por valor y devolver iteradores obtenidos de él sin peligro de que queden pendientes.
2) La plantilla de variable enable_borrowed_range se usa para indicar si un rango (
Especializaciones para todas las especializaciones de las siguientes plantillas estándar se definen como true:
range
) es un borrowed_range. La plantilla primaria se define como false.Especializaciones para todas las especializaciones de las siguientes plantillas estándar se definen como true:
- std::basic_string_view
- std::span
- std::ranges::subrange
- std::ranges::ref_view
- std::ranges::empty_view
- std::ranges::iota_view
[editar]Requerimientos semánticos
Dada una expresión e tal que decltype((e)) es T, T modela borrowed_range solamente si la validez de los iteradores obtenidos del objeto denotado por e no está atada a la duración de ese objeto.
[editar] Notas
Los usuarios pueden especializar enable_borrowed_range
a true para tipos sin calificación-cv definidos por el programa que modelan borrowed_range
, y false para tipos que no. Tales especializaciones deberán ser utilizables en las expresiones constantes y tener tipo const bool
.