Mise à jour 2016 :
À partir de gcc 6 (changements), le dialecte C++ par défaut est C++14. Cela signifie que, sauf si vous avez explicitement besoin d'un dialecte plus récent ou plus ancien, vous n'avez plus besoin de rien faire dans eclipse.
Pour Luna et Mars
Cette section wiki communautaire intègre la réponse de Trismegistos;
1. Avant de créer un projet, configurez l'analyseur syntaxique Eclipse :
Fenêtre -> Préférences -> C/C++ -> Build -> Paramètres -> Découverte -> Paramètres de compilation GCC CDT intégrés
dans la zone de texte Commande pour obtenir les spécifications du compilateur ajoutez -std=c++14
2. Créer un projet, la configuration dépend du type de projet que vous avez créé :
Pour les projets créés comme suit : Fichier -> Nouveau -> Projet -> C/C++ -> Projet C++
Cliquez avec le bouton droit sur le projet créé et ouvrez
Propriétés -> Compilation C/C++ -> Paramètres -> Paramètres des outils -> Compilateur GCC C++ -> Dialecte
Placez -std=c++14
dans la zone de texte des autres drapeaux de dialectes ou sélectionnez ISO C++11 dans le menu déroulant du standard de langage.
Il y a maintenant une nouvelle façon de résoudre cela sans le hack GXX_EXPERIMENTAL.
Pour les versions les plus récentes : (Actuellement Juno et Kepler Luna):
Sous les nouvelles versions de Juno, les réglages se trouvent à Propriétés du projet -> Générales C/C++ -> Chemins d'inclusion préprocesseur, Macros, etc. -> onglet Fournisseurs -> Paramètres du compilateur GCC CDT intégré ()
.
Anciennes versions 2012/2013 :
-
Sous Compilation C/C++ (dans les paramètres du projet), trouvez le Chemin d'inclusion préprocesseur et allez à l'onglet Fournisseurs. Désélectionnez tout sauf Paramètres du compilateur GCC CDT intégrés. Ensuite, décochez les entrées Partager les paramètres … . Ajoutez l'option -std=c++11 à la zone de texte appelée Commande pour obtenir les spécifications du compilateur.
-
Allez dans Chemins et symboles. Sous Symboles, cliquez sur restaurer les paramètres par défaut, puis appliquez.
Remarques :
Eclipse est pointilleux sur l'application, vous devez le faire à chaque fois que vous quittez un onglet de paramètres.
[Auto-promotion] : J'ai écrit mes propres instructions plus détaillées basées sur ce qui précède. http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds
Merci à l'utilisateur Personne
sur https://stackoverflow.com/a/13635080/1149664
12 votes
Au minimum, cela devrait être
std::unique_ptr
0 votes
Pas sûr que ce soit correct - char[] est convertible en char* et unique_ptr est un pointeur vers char, comme char*
1 votes
Ne devrait pas
unique_ptr
appelerdelete
, ce qui est incorrect car il a été créé avecnew[]
?6 votes
@Nick: Non, il a raison. La manière dont tu l'as écrit fera appeler
delete
, alors que tu as besoin quedelete[]
soit appelé. Leunique_ptr
suppose qu'il reçoit un pointeur, qui est supprimé avecdelete
.unique_ptr
attend un tableau, qui est supprimé correctement avecdelete[]
.0 votes
Liés : stackoverflow.com/q/8889260/636019, stackoverflow.com/q/8763937/636019, stackoverflow.com/q/8564544/636019, stackoverflow.com/q/8312854/636019
0 votes
@ildjarn: On dirait que toutes les questions sont les mêmes, mais je pense que celle-ci est mieux rédigée.
0 votes
10x les gars - J'ai mis à jour le code en fonction du 1er commentaire
0 votes
Commentateurs, veuillez connaître la syntaxe. unique_ptr est une nouvelle syntaxe pour évoquer delete[].