std::ranges::viewable_range
De cppreference.com
<tbody>
</tbody>
| 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. |