В моем текущем проекте мы должны скомпилировать исходники для openSUSE — 12.1 и для powerPC.
Проект написан на C ++ 11.
Сборка openSUS выполняется с помощью gcc-4.7.2
Сборка powerPC с помощью powerpc-e500v2-linux-gnuspe
У меня есть чистый виртуальный базовый класс (виртуальный деструктор и некоторые виртуальные функции), назовем его VirtualIf
Теперь я хочу сделать это:
someStdMap[key] = std::vector<std::unique_ptr<VirtualIf> >();
инициализировать вектор с уникальным ptr и
someStdMap[key].push_back(std::move(uniquePtrToVirtualIf));
Чтобы добавить их к этому вектору
Это прекрасно работает на сборках gcc, но не на сборке powerPC:
deleted function 'std::unique_ptr<_Tp, _Tp_Deleter>...
на обеих линиях.
Я знаю, что эта ошибка означает, что конструктор по умолчанию удален, но почему? а почему разница между 2 компиляторами? И как я могу это исправить для сборки руки?
Кажется, это проблема компилятора. Обновление компилятора решило проблему.
Других решений пока нет …