programacion portable para pagina online oficial manuales mac dev descargar c++ c++11 unique-ptr dev-c++

portable - ¿Cómo puedo compilar el código C++ 11 con Orwell Dev-C++?



dev c++ portable (1)

Asegúrese de proporcionar el indicador correcto -std al compilar. La configuración predeterminada que usa Orwell Dev-C ++ (no pasa ninguna opción -std), no habilitará algunas nuevas funciones relucientes de C ++ 11, como unique_ptr. La solución es bastante simple:

  • Para compilaciones que no sean de proyecto, vaya a: Herramientas >> Opciones de compilación >> (seleccione su compilador) >> Configuración >> Generación de código >> (establezca ''Estándar de idioma'' en una opción de C ++ 11)
  • Para compilaciones de proyectos, vaya a: Proyecto >> Compilador >> Generación de código >> (establezca ''Estándar de idioma'' a una opción de C ++ 11)

Aquí hay un poco más de información sobre el indicador -std: http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options

Como puede ver, GCC usa un dialecto GNU de C ++ 03 por defecto (que no parece ser compatible con unique_ptr).

Intentando compilar el siguiente código:

#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 }

con Orwell Dev-c ++ 5.3.0.3 produce el siguiente error:

''unique_ptr'' no es un miembro de ''std''.

¿Cómo puedo manejar esto?