Я пытаюсь скомпилировать следующий код:
#include <utility>
struct C2 {
C2() = default;
C2(C2 const&) = delete;
C2(C2&&) = default;
};
int main() {
C2 p2;
([p2_1{ std::move(p2) }]() {
auto p2_2 = std::move(p2_1); // <---
})();
return 0;
}
Однако это не компилируется и дает ошибку, что назначение p2_2
вызывает удаленную функцию, а именно конструктор копирования. Обратите внимание, что переход на p2_1
прекрасен. Почему это не использует конструктор перемещения?