Points de variation et ADL

Eric Niebler a écrit un nouvel article à propos des fonctions introduisant des points de variation dans le code générique et de leur utilisation en deux étapes à cause de l’ADL. L’exemple qu’il donne est celui de la fonction swap, puis dans la suite de begin/end. A l’heure actuelle l’utilisation de telles fonctions se fait en deux étapes :

using std::swap;
swap(/*stuff*/);

Pour permettre à l’ADL de sélectionner la bonne version de swap, c’est à dire celle qui est dans le même namespace que le type de vos paramètres si elle existe, ou la version générique dans le namespace std si il n’y a pas de version particulière.

La proposition de Eric Niebler consiste à introduire std::begin comme foncteur (dans le sens un objet se comportant comme une fonction), et à lui laisser le soin de faire l’appel depuis un point où toutes les versions seront prises en compte.

L’article à cette adresse.

Module Range

Depuis le début de l’année, Eric Niebler a écrit plusieurs billets à propos du concept de range pour le C++. Le dernier billet en date annonce la publication d’une proposition pour l’ajout de ce concept dans la bibliothèque standard.

La parenté avec ce que propose boost.range est évident (il y a surement des différences, mais n’ayant pas encore lu l’ensemble de la proposition, je ne vais pas m’avancer) et cette nouvelle m’envoie ravir. Les lambdas du C++11 avaient déjà permis d’améliorer l’utilisabilité des algorithmes de la bibliothèque standard, avec un concept de range dans la bibliothèque standard leur utilisabilité sera décuplée.

Liens : La proposition et l’implémentation