假设我有一个generate_my_range模拟a 的类range(尤其是is regular)。然后,以下代码正确:
auto generate_my_range(int some_param) {
auto my_transform_op = [](const auto& x){ return do_sth(x); };
return my_custom_rng_gen(some_param) | ranges::views::transform(my_transform_op);
}
auto cells = generate_my_range(10) | ranges::to<std::vector>;
是my_custom_rng_gen(some_param)由(第一个)管道运算符按值获取的,还是离开generate_my_range范围后是否有悬挂的引用?
函数调用会一样ranges::views::transform(my_custom_rng_gen(some_param),my_transform_op)吗?
如果我使用左值引用会正确吗?例如:
auto generate_my_range(int some_param) {
auto my_transform_op = [](const auto& x){ return do_sth(x); };
auto tmp_ref = my_custom_rng_gen(some_param);
return tmp_ref | ranges::views::transform(my_transform_op);
}
如果这些操作的值取值范围,那么如果将左值ref传递给容器该怎么办?我应该使用ranges::views::all(my_container)模式吗?