Подтвердить что ты не робот

Как получить g++ для компиляции кода С++ 11 с помощью конструктора перемещения?

Я не могу заставить g++ компилировать код С++ 11, который использует конструктор перемещения. Я продолжаю получать эту ошибку:

[email protected]:~/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&)’

Программа, которую я пишу, сильно отличается от этой, но я подрезал ее до той части, которая кажется, что она должна работать, но все же вызывает ошибку:

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

Может ли кто-нибудь сказать мне, что я делаю неправильно? Скорее, как это исправить?

Это моя версия gcc:

gcc (Ubuntu/Linaro 4.6.2-14ubuntu2) 4.6.2
4b9b3361

Ответ 1

Скажите g++ -std=c++0x ./t2.cpp.

Пока вы на нем, вы также можете сделать это правильно и включить все предупреждения:

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

Вы действительно не должны компилироваться с меньшими затратами, особенно если вы собираетесь задавать вопросы о своем коде на SO:-) В версии выпуска, например, -s -O2 -flto -march=native, необходимо опционально использовать различные флаги оптимизации.

Ответ 2

Вероятно, вы забыли добавить -std=c++0x в свою командную строку.