Une nouvelle fonctionnalité de C++11:la sémantique de mouvement

Ce tutoriel est une brève introduction à la sémantique de mouvement en C++.

a marqué ce sujet comme résolu.

Après vampirisation, l'objet sera dans un état cohérent. Encore heureux. C'est la Garantie Basique, sans ça, le programme serait buggué. La non-cohérence est une erreur de programmation. A la limite elle ne pourrait pas l'être s'il y avait un flag quelque part pour dire : non cohérent. Mais, l'ajout de ce flag participerait de fait à la définition de ce qu'est être cohérent pour l'objet étudié. Et le flag serait testé dans le destructeur et dans les opérateurs d'affectation.

Sinon … Il y aurait quelque part un référentiel que l'on pourrait regarder pour voir les commits/les diffs entre deux versions ? Cela serait bien plus simple pour faire des revues. Merci.

En fait, il me suffit d'ajouter un message qui s'affiche sur l'historique des versions. Je ne le faisais pas avant, mais j'ai commencé il n'y a pas longtemps (c'est-à-dire après la dernière mise à jour de ce tutoriel). J'ai oublié de le faire pour la dernière mise à jour, car elle ne consistait qu'en quelques corrections orthographiques.

+0 -0

Je n'avais pas vu que tu allais publier ce tuto. Quelques remarques :

  • certains commentaires dans le code sont très long et sortent de l'écran. C'est pénible de devoir utiliser le slider pour voir le texte. Tu devrais écrire tes commentaires sur plusieurs lignes, pour qu'ils soient plus lisible

HS : surtout que le slider ne fonctionne pas toujours correctement. Le second ne fonctionne pas chez moi.

  • tu es globalement cohérent sur la traduction de "move", tu utilises principalement "mouvement". Mais il y a quelques "déplacement" qui traînent. (5 en tout). Je pense qu'il faudrait homogénéiser.

HS : perso, j'utilise aussi mouvement et déplacement, pas forcement de façon cohérente. Je préfère déplacement, qui exprime mieux le chose (faire des mouvements = gesticuler sur place, faire un déplacement = aller d'un point A à un point B). Mais mouvement est plus proche de move phonétiquement, donc plus naturel. Je ne sais pas si d'autres ont vu d'autres habitudes ou pratiques ?

  • pour terminer, un lien : http://en.cppreference.com/w/cpp/language/value_category. Je ne sais pas si tu connais cette page. Cela pourrait être intéressant de le mettre en fin d'article, pour les lecteurs plus avancés, pour qu'ils puissent aller voir les autres types de values. Il y a un lien vers l'article de Stroustrup en fin de page sur les explications sur les noms de values.

Bon boulot en tout cas, vivement le prochain ;)

+4 -0
  1. […]
  2. […]
  3. Quand tu passes une expression à forward, peu importe que ce soit une rvalue ou une lvalue, ça ne change rien au type du résultat qui ne dépend que de la nature de ce qu'il y a entre <>

Freedom

Autant les autres remarques étaient de simples remarques, autant celle-ci était une correction d'une erreur. Je cite ce que tu as écris :

Tout cela est utilisé par la fonction std::forward, qui permet de "choisir" la bonne référence selon si ce qu'on lui donne en paramètre est une lvalue ou une rvalue. On peut la définir ainsi :

Ainsi, si elle est appelée sur une lvalue de type A, le paramètre sera évalué comme A&, et on obtient :

Cette fonction forward ne choisit rien selon son argument, son comportement est déterminé par l'argument template que tu lui donne explicitement, ce que tu vois dans ton code suivant :

1
    return std::unique_ptr<T>{new T{std::forward<Args>(args)...}};

Le comportement dépend uniquement du Args que tu lui donnes, aucun argument template de forward n'est déduit. Ce Args peut en effet être déterminé avant par les règles de déduction des arguments template (c'est d'ailleurs généralement le cas, y compris dans ton exemple, c'est à l'utilisation de make_unique que Args est déterminé par les règles de déduction des arguments template), mais en aucun cas à cause du args que tu donnes à forward.

+1 -0

Bonjour les agrumes !

La bêta tutoriel « Une nouvelle fonctionnalité de C++11 : la sémantique de mouvement » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

EDIT : (Commentaires sur plusieurs lignes, "déplacement" remplacé par "mouvement" pour homogénéiser. Désolé, j'ai encore oublié de faire une diff…)

EDIT 2 : Le vote ci-dessus est toujours en attente de votants ;)

+0 -0
Ce sujet est verrouillé.