Comment puis-je compiler du C++11 code avec Orwell Dev-C++?
Essayer de compiler le code suivant:
#include <iostream>
#include <memory>
struct Foo {
Foo() { std::cout << "Foo::Foo\n"; }
~Foo() { std::cout << "Foo::~Foo\n"; }
void bar() { std::cout << "Foo::bar\n"; }
};
void f(const Foo &foo)
{
std::cout << "f(const Foo&)\n";
}
int main()
{
std::unique_ptr<Foo> p1(new Foo); //p1 owns Foo
if (p1) p1->bar();
{
std::unique_ptr<Foo> p2(std::move(p1)); //now p2 owns Foo
f(*p2);
p1 = std::move(p2); //ownership returns to p1
std::cout << "destroying p2...\n";
}
if (p1) p1->bar();
//Foo instance is destroyed when p1 goes out of scope
}
avec Orwell Dev-c++ 5.3.0.3 génère l'erreur suivante:
'unique' n'est pas un membre de 'std'.
Comment puis-je gérer cela?
Je n'ai pas mentionné IDE, mais je crois que l'exemple de code pourrait être abaissé un peu, peut-être pour quelque chose comme
Installer un récent C++11 compatible compilateur, par exemple GCC
#include <memory> int main () { std::unique_ptr<int> p;}
. Qui pourrait grandement réduire la inutiles dans votre post.Installer un récent C++11 compatible compilateur, par exemple GCC
OriginalL'auteur Fihop | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Assurez-vous de fournir le bon -std drapeau lors de la compilation. Le paramètre par défaut Orwell Dev-C++ utilise (ne pas passer toute option-std), ne permettra pas à certains flambant neuf C++11 fonctions, comme unique_ptr. La solution est assez simple:
Voici un peu plus d'informations sur l'-std drapeau:
http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options
Comme vous pouvez le voir, GCC utilise GNU dialecte de C++03 par défaut (qui ne semble pas à l'appui de unique_ptr).
J'ai un problème lors de la sélection de la Langue standard comme GNU C++11, il me donne "non reconnu option de ligne de commande "-std=c++0x"
Essayez de sélectionner le GNU C++ standard. Semble que j'ai besoin de mettre à jour la norme ISO C++11 drapeaux à "c++11" à partir de "c++0x").
Avez-vous été en mesure de faire ce travail ? J'ai installé la dernière version de Dev-C++ 5.4.2 , mais non reconnu "option de ligne de commande "-std=c++0x" erreurs lorsque j'essaye d'activer le c++11.
OriginalL'auteur Orwell