6 votes

Pourquoi retourner std::ranges::safe_iterator_t au lieu de std::ranges::safe_subrange_t à partir d'algorithmes prenant std::ranges::output_range

J'écris un algorithme qui écrit certaines données dans une plage de sortie donnée (le texte initial de la question comprenait les détails et cela a fait dévier la discussion dans les commentaires dans une mauvaise direction). Je veux que l'API soit aussi proche que possible des autres algorithmes de plage de la bibliothèque standard.

J'ai regardé le dernier projet pour trouver des exemples de std::ranges::output_range et n'a trouvé que 2 algorithmes :

Et ils reviennent tous les deux std::ranges::safe_iterator_t . J'ai pensé qu'il était logique de retourner std::ranges::safe_subrange_t à la place. Même si vous écrivez dans le flux de sortie, vous pouvez toujours retourner une paire itérateur-sentinelle dans ce cas et passer cette gamme en aval.

J'ai trouvé P0970 et ça ressemble à std::ranges::safe_subrange_t a été ajouté plus tard. Peut-être les algorithmes n'ont-ils tout simplement pas été mis à jour ? Ou y a-t-il une autre raison ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X