Я пытаюсь сгладить контейнер контейнера в одно измерение, используя views :: join и views :: move, но мне трудно понять разницу между move сначала, а затем join VS, join и затем move , Try2 работал, как и ожидалось, но может ли кто-нибудь помочь мне понять, что происходит под капотом, так что Try1 заканчивает копирование? где-то движение не сработало. Спасибо !
wandbox ссылка на код: https://wandbox.org/permlink/BeFI3wjBiUPbsMA2
#include <iostream>
#include <vector>
#include <string>
#include <range/v3/all.hpp>
int main()
{
auto words = std::vector<std::vector<std::string>>{
{"Hello", "World"},
{"ni","hao"}
};
// Try1
auto result1 = words
| ranges::views::move
| ranges::views::join
| ranges::to<std::vector<std::string>>();
std::cout<<ranges::views::all(ranges::views::join(words))<<std::endl;
//[Hello,World,ni,hao]
// Try2
auto result2 = words
| ranges::views::join
| ranges::views::move
| ranges::to<std::vector<std::string>>();
std::cout<<ranges::views::all(ranges::views::join(words))<<std::endl;
//[,,,]
}