News - Sutter's Mill: April 2007 ISO C++ Standards Meeting
Par Emmanuel Deloget, mercredi 30 mai 2007 à 11:30 :: News :: permalien #78
Herb Sutter a récemment publié un nouveau billet qui nous informe que plusieurs nouvelles fonctionnalités importantes ont enfin été votées par le comité C++ pour faire partie du coeur du langage (enfin, de la prochaine version du langage, le C++09).
De la présentation des dernières modification du standard C++09
Dans son billet Sutter's Mill: Trip Report: April 2007 ISO C++ Standards Meeting, Herb Sutter discute des alias de template et des type varargs, ou variadic templates.
La première de ces fonctionnalités va enfin nous permettre d'écrire:
template<typename T> using Registry = std::map<std::string, T>;
Cette définition est l'équivalente d'une syntaxe inexistante que tout développeur C++ a un jour rêvé d'écrire:
template <typename T> typedef std::map<std::string, T> Registry;
Il était temps !
La seconde de ces fonctionnalités va grandement simplifier le développement de template prenant un nombre variable d'argument. A l'heure actuelle, toute définition de template prenant de 0 à N paramètres se fait via une spécialisation. Si on extrait quelques définition de la classe tr1::tuple:
template< class T1 = unspecified, class T2 = unspecified, ... , class TN = unspecified > class tuple;
template<class T1, class T2, ..., class TN> tuple<V1, V2, ..., VN> make_tuple( const T1&, const T2& , ..., const TN& );
Cette définition devient maintenant
template <class... Types> class tuple;
template <class... Types> tuple<VTypes...> make_tuple(Types&...);
Le compilateur est chargé de compter le nombre des types, et de replacer les différents types utilisé dans la définition.
Ainsi, instancier make_tuple<>() avec les trois classes A, B, C créera une fonction
tuple<VA, VB, VC> make_tuple(A&, B&, C&);
A noter que les classes VA, VB, VC sont des classes dérivées de A, B et C respectivement.
Mais n'oubliez pas aussi...
... qu'un meeting viens d'avoir lieu (le meeting de mai), et que par conséquent, plusieurs documents nouveaux sont disponibles.
- le mailing 2007/05, contenant l'ensemble des documents de réflexion du comité. Une nouvelle version du working draft (pdf) est disponible.
- la révision 47 de la Core Issue List, qui contient l'ensemble des problèmes identifiés dans la norme C++ courante (et les solutions adoptées pour le C++09)
- la révision 48 de la Library Issue List, qui contient la liste des problèmes liés à la librairie standard.
Voilà, ça vous fait un brin de lecture avant la prochaine réunion du comité C++ !
Commentaires
Aucun commentaire pour le moment.
:: Fil rss des commentaires de ce billet ::
Ajouter un commentaire