Je suis nouveau à C ++ 11 et écrit la classe suivante où j'aimerais pouvoir prendre en charge Cependant, quand je Compiler avec l'option mes questions sont les suivantes: p> merci, p> p> std :: déplacer code>:
-std = c ++ 0x code>, le compilateur se plaint: p>
x code> d'avoir un constructeur de déplacement par défaut? LI>
3 Réponses :
Comme les commentaires suggèrent, l'erreur a été provoquée par une option incorrecte du compilateur. Option -STD = c ++ 11 code> doit être utilisé. (Notez qu'il est minuscule au lieu des majuscules, sinon le compilateur se plaint de ce qui suit):
Voir Info GCC CODE> Pour plus d'informations la prochaine fois. Il donne une rupture assez approfondie sur la différence entre les options. Bien que je comprends que cela soit déroutant avec les versions du compilateur et la manière dont il affecte les drapeaux, une combinaison de la prise en charge de la version de la version GCC C ++ 11,
info GCC code> et
homme GCC code> Est tout ce dont vous avez besoin vraiment.
Ce code est compilé par GCC 4,8,1
Aussi la norme C ++ présente l'exemple suivant P>
struct trivial { trivial() = default; trivial(const trivial&) = default; trivial(trivial&&) = default; trivial& operator=(const trivial&) = default; trivial& operator=(trivial&&) = default; ~trivial() = default; };
@keelar J'utilise www.ideone.com où toutes les options du compilateur qui compilent le code que C ++ 11 sont déjà définies.
@Keeler G ++ doit compiler dans le mode GNU ++ 98 par défaut.
de la page C ++ 0x de GCC:
Le mode C ++ 11 de GCC implémente une grande partie de la norme C ++ 11 produite par le Comité ISO C ++. La norme est disponible auprès de divers domaines nationaux organes de normalisation; papiers de travail d'avant la sortie de la Standard sont disponibles sur le site Web du comité ISO C ++ à http://www.open-std.org/jtc1/sc22/wg21/ a>. Depuis que cette norme n'a que Récemment été achevé, l'ensemble des fonctionnalités fournies par l'expérimental C ++ 11 MODE peut varier considérablement d'une version GCC à une autre. Non Les tentatives seront faites pour préserver la compatibilité en arrière avec C ++ 11 Caractéristiques dont la sémantique a changé au cours de C ++ 11 Normalisation. B> P> blockQuote>
Le
std = c ++ 11 code> a également été introduit dans GCC 4.7. De
man gcc code> (je ne l'ai pas trouvé dans
info gcc code>): p>
xxx pré> Je prends cela pour dire dans le Dernière version du compilateur, les drapeaux sont identiques, mais vous devez préférer
C ++ 11 code> plutôt pour éviter les bugs potentiels. p>
à partir de la commande code> info " P>
La valeur par défaut, si aucune option de dialecte de langue C ++ n'est donnée, est '-Std = gnu ++ 98'. p> blockQuote>
ceci signifie
c ++ 98 code> avec des extensions. p> p>
-std = c ++ 11, thats
Ceci est un bug dans votre - je suppose vieux - compilateur. G ++ Même aussi vieux que 4.6.4 compile le programme sans plainte . Essayer d'apprendre C ++ 11 avec un compilateur si vieux qu'il utilise
-std = c ++ 0x code> au lieu de
-std = c ++ 11 code> sera probablement très difficile . Essayez de mettre à jour une version récente du compilateur.
Merci beaucoup pour vos commentaires!