Альтернативой является использование итераторов перемещения:
std::vector<std::wstring> dstData(std::make_move_iterator(srcData.begin()),
std::make_move_iterator(srcData.end()));
Или используйте алгоритм move
:
std::move(srcData.begin(), srcData.end(), std::back_inserter(dstData));
Так как его спросили, вот как можно заставить оригинальное предложение работать:
int main()
{
std::transform(std::begin(srcData),
std::end(srcData),
std::back_inserter(dstData),
static_cast<std::wstring&&(*)(std::wstring&)>(&std::move<std::wstring&>));
}