Retro ingéniéring c++11

Please use this forum to signal bugs.
Merci d'utiliser ce forum pour signaler des bugs.

Retro ingéniéring c++11

Postby Teaniel » Tue 6 Nov 2012 19:36

Bonjour,

Vous êtes sans doute déjà au courant, mais bon, au cas ou :
Le retro ingéniering c++ ignore les nouveaux types de pointeurs (&&) et les considère comme des erreurs, ce qui le conduit à ignorer l'argument auquel il s'attache, ainsi que le corps de la fonction. Ce corps est remplacé par celui d'une autre (pour l'instant je ne l'ai utilisé que dans un constructeur de copie et il est remplacé par celui du constructeur par défaut) .
Pour rappel, ce nouveau symbole représente les arguments passés par référence lorsque ladite référence pointe sur une rvalue. Dans mon utilisation cela permet d'éviter les copies profondes en particulier lors des retours de fonctions.

Code: Select all
class A {
    int *i = nullptr;
    A() {}
    A( const A &a ) : i(a.i ? new int(*a.i) : nullptr) {} // constructeur de copie normal OK
    A( A &&a ) : i(a.i) { a.i=nullptr; } // constructeur de copie 'rapide' --> non reconnu par la rétro ingéniérie. on se retrouve avec un deuxieme A() {}
    ...
};


Cordialement,
Marc
Teaniel
 
Posts: 75
Joined: Sun 28 Oct 2012 18:57

Re: Retro ingéniéring c++11

Postby Bruno Pagès » Sun 11 Nov 2012 12:57

Bonjour,

Oui je suis au courant pour &&, la grosse nouveauté introduite par la version 5.1 concerne justement C++11

Ce sera sera corrigé dans la prochaine version
ImageAuthor of Bouml
Bruno Pagès
 
Posts: 454
Joined: Mon 20 Feb 2012 08:23
Location: France

Re: Retro ingéniéring c++11

Postby Bruno Pagès » Sun 2 Dec 2012 21:58

La version 6.4 est disponible et corrige ce problème
ImageAuthor of Bouml
Bruno Pagès
 
Posts: 454
Joined: Mon 20 Feb 2012 08:23
Location: France


Return to Bug reports / Rapports de bugs

Who is online

Users browsing this forum: No registered users and 1 guest