Commit e3aa215b by Aaron Gokaslan Committed by GitHub

Add perfect forwarding to make_iterator calls (#3860)

parent 1b27b744
...@@ -2403,7 +2403,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal, ...@@ -2403,7 +2403,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
typename Type, typename Type,
typename... Extra> typename... Extra>
iterator make_iterator(Type &value, Extra &&...extra) { iterator make_iterator(Type &value, Extra &&...extra) {
return make_iterator<Policy>(std::begin(value), std::end(value), extra...); return make_iterator<Policy>(
std::begin(value), std::end(value), std::forward<Extra>(extra)...);
} }
/// Makes an iterator over the keys (`.first`) of a stl map-like container supporting /// Makes an iterator over the keys (`.first`) of a stl map-like container supporting
...@@ -2412,7 +2413,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal, ...@@ -2412,7 +2413,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
typename Type, typename Type,
typename... Extra> typename... Extra>
iterator make_key_iterator(Type &value, Extra &&...extra) { iterator make_key_iterator(Type &value, Extra &&...extra) {
return make_key_iterator<Policy>(std::begin(value), std::end(value), extra...); return make_key_iterator<Policy>(
std::begin(value), std::end(value), std::forward<Extra>(extra)...);
} }
/// Makes an iterator over the values (`.second`) of a stl map-like container supporting /// Makes an iterator over the values (`.second`) of a stl map-like container supporting
...@@ -2421,7 +2423,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal, ...@@ -2421,7 +2423,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
typename Type, typename Type,
typename... Extra> typename... Extra>
iterator make_value_iterator(Type &value, Extra &&...extra) { iterator make_value_iterator(Type &value, Extra &&...extra) {
return make_value_iterator<Policy>(std::begin(value), std::end(value), extra...); return make_value_iterator<Policy>(
std::begin(value), std::end(value), std::forward<Extra>(extra)...);
} }
template <typename InputType, typename OutputType> template <typename InputType, typename OutputType>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment