guides de déduction pour std::ranges::subrange
Depuis fr.cppreference.net
| Défini dans l'en-tête <ranges>
|
||
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S) -> subrange<I, S>;
|
(1) | (depuis C++20) |
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S, /*make-unsigned-like-t*/<std::iter_difference_t<I>>) ->
subrange<I, S, ranges::subrange_kind::sized>;
|
(2) | (depuis C++20) |
template< ranges::borrowed_range<R> >
subrange(R&&) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
(ranges::sized_range<R> ||
std::sized_sentinel_for<ranges::sentinel_t<R>,
ranges::iterator_t<R>>) ?
ranges::subrange_kind::sized : ranges::subrange_kind::unsized>;
|
(3) | (depuis C++20) |
template< ranges::borrowed_range<R> >
subrange(R&&, /*make-unsigned-like-t*/<ranges::range_difference_t<R>>) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
ranges::subrange_kind::sized>;
|
(4) | (depuis C++20) |
Ces guides de déduction sont fournis pour std::ranges::subrange.
1) Déduit les arguments du modèle à partir du type de l'itérateur et de la sentinelle. La
subrange est dimensionnée si std::sized_sentinel_for<S, I> est satisfaite, tel que déterminé par l'argument de modèle par défaut.2) Déduit les arguments du modèle à partir du type de l'itérateur et de la sentinelle, tandis que la taille de la plage est spécifiée. La
subrange est toujours dimensionnée.3) Déduit les arguments du modèle à partir du type de la plage. La
subrange est dimensionnée si la taille peut être obtenue à partir de la plage ou de son itérateur et de sa sentinelle.4) Déduit les arguments du modèle à partir du type de la plage, tandis que la taille de la plage est spécifiée. La
subrange est toujours dimensionnée.Pour la définition de /* make-unsigned-like-t */, voir make-unsigned-like-t .
Notes
Lors de la construction de l'objet
subrange
,
- pour (1,2) , le comportement est indéfini si la paire itérateur-sentinelle ne dénote pas une plage valide,
- pour (2,4) , le comportement est indéfini si la taille donnée n'est pas égale à la taille de la plage.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3404 | C++20 | des guides de déduction inutiles depuis les types de type paire étaient fournis | supprimés |