Wrote the following code in vs13:
std::vector<std::string> myvector(1000);
std::fill(myvector.begin(), myvector.end(), "Hello World");
std::vector<std::string> pushto;
for (auto s: myvector)
pushto.push_back(std::move(*s));
Works but didn't move, it called string copy ctor instead. myvector
still had his "Hello World"s at the end.
Using regular c++ 98 iteration like this:
std::vector<std::string> myvector(1000);
std::fill(myvector.begin(), myvector.end(), "Hello World");
std::vector<std::string> pushto;
for (auto s = myvector.begin(); s != myvector.end();s++)
pushto.push_back(std::move(*s));
Actually worked, and move was called. myvector
strings were empty.
Why the first more modern notation doesnt work?