IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

L'évolution du C++...


Sujet :

C++

  1. #21
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Pour ma part, je pense que parmis les choses les plus excitantes que l'on peut espèrer dans C++0x, il y a :
    - Les concepts
    - L'utilisation de auto (les développeurs pythons apprécieront)
    - Une syntaxe d'initialisation plus avancée
    - Les lambda

    Mais bien sur, rien de tout ça n'est certain de voir le jour.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Par défaut
    Les Concepts ?
    Auto ?
    Les Lambda ?

    Vous pouvez m'expliquer

    Merci d'avance...

    Will

  3. #23
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Voici en gros quelques éléments, détail ou usage avancés se trouvent sur http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/ et autres années.

    Les concepts :
    - Vérifier à la compilation qu'un argument template a un type qui est convenable pour le template (ex : On met un type non assignable dans un vector, on a immédiatement un message d'erreur clair)
    - Vérifier à la compilation que la personne n'utilise pas d'autres fonctionnalités d'un type que celle qu'il a indiqué utiliser (par exemple, qu'il n'utilise pas accidentellement un constructeur de copie quand il n'a pas indiqué que l'argument template devait être copiable)

    Auto :
    Déterminer le type d'une variable en fonction de celui de sa valeur d'initialisation. Exemple classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (std::map<std::string, std::vector<int> >::const_iterator it = maMap.begin(); it != maMap.end() ; ++it) {...}
    Deviendrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (auto it = maMap.begin(); it != maMap.end() ; ++it) {...}
    Les lambdas : Possibilité de définir localement une fonction anonyme. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    vector<C> v;
    void print(std::ostream &os, C const& c);
    std::ostream &operator<<(std::ostream &os, C const& c);
    std::for_each(v.begin(), v.end(), ....)
    Aujourd'hui, à la place des ..., on peut écrire :
    - Une fonction spéciale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void printOnCout(C const &c)
    {
      cout << c;
    }
    std::for_each(v.begin(), v.end(), &printOnCout)
    - Utiliser les binders de la STL, ou mieux, ceux de boost :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::for_each(v.begin(), v.end(), boost::bind(&print, std::cout, _1);
    - Laisser tomber for_each, et écrire une boucle for explicite.


    Avec les lambdas, on pourrait directement écrire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::for_each(v.begin(), v.end(), lambda (x, std::cout << x));
    En gros, pour moi, tant qu'il n'y a pas de lambda, les algorithmes devant prendre un foncteur en argument perdent une grande partie de leur interêt.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Évolution d’une application existante. Quel choix ?
    Par BBerni dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 10/05/2004, 10h59
  2. Réponses: 32
    Dernier message: 20/01/2004, 19h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo