#include <iostream>
#include <vector>
#include <algorithm>
struct Thing {
Thing() {}
//Thing(Thing &&) { std::cout << "Moved a thing" << std::endl; }
Thing & operator=(Thing &&) { std::cout << "Moved a thing" << std::endl; }
};
int main() {
std::vector<Thing> source1(1);
std::vector<Thing> source2(1);
std::cout << "Move vector:" << std::endl;
std::vector<Thing> vector_moved{std::move(source1)};
std::cout << "-------------" << std::endl;
std::cout << "Move elements:" << std::endl;
std::vector<Thing> elements_moved{source2.size()};
std::move_backward(source2.begin() , source2.end(), elements_moved.end());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKCnN0cnVjdCBUaGluZyB7CglUaGluZygpIHt9CgkvL1RoaW5nKFRoaW5nICYmKSB7IHN0ZDo6Y291dCA8PCAiTW92ZWQgYSB0aGluZyIgPDwgc3RkOjplbmRsOyB9CglUaGluZyAmIG9wZXJhdG9yPShUaGluZyAmJikgeyBzdGQ6OmNvdXQgPDwgIk1vdmVkIGEgdGhpbmciIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8VGhpbmc+IHNvdXJjZTEoMSk7CglzdGQ6OnZlY3RvcjxUaGluZz4gc291cmNlMigxKTsKCQoJc3RkOjpjb3V0IDw8ICJNb3ZlIHZlY3RvcjoiIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6dmVjdG9yPFRoaW5nPiB2ZWN0b3JfbW92ZWR7c3RkOjptb3ZlKHNvdXJjZTEpfTsKCQoJc3RkOjpjb3V0IDw8ICItLS0tLS0tLS0tLS0tIiA8PCBzdGQ6OmVuZGw7CgkKCXN0ZDo6Y291dCA8PCAiTW92ZSBlbGVtZW50czoiIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6dmVjdG9yPFRoaW5nPiBlbGVtZW50c19tb3ZlZHtzb3VyY2UyLnNpemUoKX07CglzdGQ6Om1vdmVfYmFja3dhcmQoc291cmNlMi5iZWdpbigpICwgc291cmNlMi5lbmQoKSwgZWxlbWVudHNfbW92ZWQuZW5kKCkpOwoJCglyZXR1cm4gMDsKfQ==