From 1f83e8c1b08f75961064cd8f11845ee5da513513 Mon Sep 17 00:00:00 2001 From: q66 Date: Tue, 31 Jan 2017 19:17:46 +0100 Subject: [PATCH] cleaner range passing in second version of make_CONTAINER --- ostd/unordered_map.hh | 5 ++--- ostd/vector.hh | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/ostd/unordered_map.hh b/ostd/unordered_map.hh index 5ce1a55..f537f7b 100644 --- a/ostd/unordered_map.hh +++ b/ostd/unordered_map.hh @@ -30,7 +30,6 @@ struct ranged_traits const> { template inline std::unordered_map make_unordered_map(R range) { - /* TODO: specialize for contiguous ranges and matching value types */ std::unordered_map ret; for (; !range.empty(); range.pop_front()) { ret.emplace(range.front()); @@ -42,11 +41,11 @@ template inline std::unordered_map< typename RangeValue::first_type, typename RangeValue::second_type -> make_unordered_map(R range) { +> make_unordered_map(R &&range) { return make_unordered_map< typename RangeValue::first_type, typename RangeValue::second_type - >(std::move(range)); + >(std::forward(range)); } } /* namespace ostd */ diff --git a/ostd/vector.hh b/ostd/vector.hh index 143cd8b..a1766bf 100644 --- a/ostd/vector.hh +++ b/ostd/vector.hh @@ -37,8 +37,8 @@ inline std::vector make_vector(R range) { } template -inline std::vector> make_vector(R range) { - return make_vector>(std::move(range)); +inline std::vector> make_vector(R &&range) { + return make_vector>(std::forward(range)); } } /* namespace ostd */