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.