Изменить: Конечная цель: Я хочу создать класс контейнера, который никогда не использует перемещение, даже если он доступен. NonMove - это класс тестовых объектов для этого контейнера.
Я пробовал разные варианты, но GCC настаивает на желании использовать move.
class NonMove {
public:
NonMove() {}
// Copy.
NonMove(const NonMove&) {}
NonMove& operator=(const NonMove&) {}
// Move
NonMove(NonMove&&) = delete;
NonMove& operator=(NonMove&&) = delete;
};
NonMove foo() {
return NonMove();
}
Ошибка с GCC 4.9.1 с -std = gnu ++ 11
move.cc: In function ‘NonMove foo()’:
move.cc:15:18: error: use of deleted function ‘NonMove::NonMove(NonMove&&)’
return NonMove();
^
move.cc:10:3: note: declared here
NonMove(NonMove&&) = delete;
^