programa ejecutar compiler compilar compilador como c++ g++ c++11 move-constructor

ejecutar - ¿Cómo obtengo g++ para compilar código c++ 11 con un constructor de movimiento?



g++ windows (2)

Parece que no puedo hacer que g ++ compile el código c ++ 11 que usa un constructor de movimiento. Sigo recibiendo este error:

collin@Serenity:~/Projects/arraylib$ g++ ./t2.cpp ./t2.cpp:10:27: error: expected ‘,’ or ‘...’ before ‘&&’ token ./t2.cpp:10:38: error: invalid constructor; you probably meant ‘Blarg (const Blarg&)’

El programa que estoy escribiendo es bastante diferente a este, pero lo recorté a la parte que parece que definitivamente debería funcionar, pero aún así genera el error:

#include <iostream> using namespace std; class Blarg { public: Blarg () {}; Blarg (const Blarg& original) {}; /* Copy constructor */ Blarg (Blarg&& original) {}; /* Move constructor */ }; int main(int argc, char *argv[]) { Blarg b; return 0; }

¿Alguien puede decirme lo que estoy haciendo mal? Más bien, ¿cómo solucionarlo?

Esta es mi versión gcc:

gcc (Ubuntu/Linaro 4.6.2-14ubuntu2) 4.6.2


Diga g++ -std=c++0x ./t2.cpp .

Mientras lo hace, también puede hacerlo bien y habilitar todas las advertencias:

g++ -W -Wall -Wextra -pedantic -std=c++0x -o t2 t2.cpp

Realmente, no deberías estar compilando con menos, especialmente si vas a hacer preguntas sobre tu código en SO :-) Opcionalmente, deberían considerarse varios indicadores de optimización para la versión de lanzamiento, como -s -O2 -flto -march=native .


Probablemente olvidó agregar -std=c++0x a su línea de comandos.