Architecture logicielle & Développement

News - Sutter's Mill: April 2007 ISO C++ Standards Meeting

Tags: ,

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.

Voilà, ça vous fait un brin de lecture avant la prochaine réunion du comité C++ !

Trackbacks

Aucun trackback.

Les trackbacks pour ce billet sont fermés.

Commentaires

Aucun commentaire pour le moment.

Ajouter un commentaire

Si votre navigateur est compatible, vous pouvez vous aider de la barre d'outils placée au-dessus de la zone de saisie pour enrichir vos commentaires.