У меня есть следующий класс:
class Blub
{
public:
Blub(int value); // Not a copy constructor!
Blub(Blub&&) = default; // This line is necessary because move constructor is not added automatically
Blub& operator=(Blub&&) = default; // Does not work!?
// Disallow copy
Blub(Blub const &) = delete;
Blub& operator=(Blub const &) = delete;
};
По какой-то странной причине мне пришлось форсировать конструктор перемещения.Теперь пытаемся заставить дросселирования оператора назначения G ++ (4.6.1) выполнить: ошибка: 'Blub & Blub :: operator = (Blub &&)' не может быть по умолчанию
К сожалению, нет никакого ПОЧЕМУ,Может ли кто-нибудь пролить свет на то, почему это не удается
Решение: На самом деле я использую плагин dragonegg для генерации кода llvm.Отключение dragonegg и использование обычного g ++ по умолчанию работает нормально.Глядя на источник g ++, сообщение не может быть по умолчанию (с назначением перемещения) было ошибкой в 4.5 (module.c), но было исправлено в 4.6.?.Так как dragonegg действительно зависит от g ++ 4.5, я подозреваю, что исправления еще нет.Облом.