假设我有一个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)
模式吗?