Je viens de découvrir qu'à un point, le C++11 projet a std::begin
/std::end
des surcharges pour std::pair
qui a permis le traitement d'une paire d'itérateurs comme une gamme adaptée pour une utilisation dans une gamme à base de boucle (N3126, section 20.3.5.5), mais cela a depuis été supprimé.
Personne ne sait pourquoi il a été supprimé?
Je trouve la suppression de très regrettable, car il semble qu'il n'y est pas d'autre moyen pour traiter une paire d'itérateurs comme un éventail. En effet:
- Les règles de recherche pour début/fin dans une gamme à base de boucle pour dire que début/fin sont recherchées dans 1) que les fonctions de membres de l'objet range 2) comme gratuit fonctions associées "espaces de noms"
-
std::pair
n'ont pas de début/fin des fonctions de membre du - Le seul espace de noms associé pour
std::pair<T, U>
, en général, est l'espace de noms std - Nous ne sommes pas autorisés à surcharger
std::begin
/std::end
pourstd::pair
- mêmes - On ne peut pas se spécialisent
std::begin
/std::end
pourstd::pair
(en raison de la spécialisation devrait être partielle et ce n'est pas permis pour les fonctions)
Est-il un autre moyen que je suis absent?