C++標準庫包含方便的模板類std::move_iterator
。鑑於std::move
和std::forward
之間的密切關係,爲什麼沒有相應的std::forward_iterator
?用法示例:forward_iterator模板類是否有意義?
template <typename C>
auto foo(C&& values)
{
remove_reference_t<C> result {};
result.reserve(values.size());
std::transform(std::make_forward_iterator<C>(std::begin(values)),
std::make_forward_iterator<C>(std::end(values))),
std::back_inserter(result), Bar());
return result;
}
的想法是我現在可以使用foo
,如:
std::vector<ComplexType> values {/* lots of values */};
auto copied_fooed = foo(values);
// or
auto moved_fooed = foo(std::move(values));
而不必寫兩個foo
秒。
正確的名稱應該是'std :: forwardable_iterator'以避免與經典的Forward Iterator衝突。 – 101010
@ Jarod42謝謝。固定(我認爲)。 – Daniel
你問你爲什麼沒有一個(提出建議?)或者如何寫一個? – Barry