std::ranges::viewable_range
De cppreference.com
| Definido en el archivo de encabezado <ranges>
|
||
template<class T>
concept viewable_range =
ranges::range<T> &&
((ranges::view<std::remove_cvref_t<T>> &&
std::constructible_from<std::remove_cvref_t<T>, T>) ||
(!ranges::view<std::remove_cvref_t<T>> &&
(std::is_lvalue_reference_v<T> ||
(std::movable<std::remove_reference_t<T>> && !/*es-lista-de-inicializadores*/<T>))));
|
(desde C++20) | |
El concepto viewable_range es un refinamiento de range que describe un rango que puede convertirse de manera segura a una vista (view).
La constante /*es-lista-de-inicializadores*/<T> es true si y solo si std::remove_cvref_t<T> es una especialización de std::initializer_list.
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3481 | C++20 | viewable_range aceptaba un l-valor de una vista de solo-movimiento.
|
Lo rechaza. |
| P2415R2 | C++20 | viewable_range solo aceptaba r-valores no-view que fueran borrowed_range.
|
Acepta más tipos. |