From 8f982c8b2776b043543d57f15a4b3c5b4ee5ff86 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 7 Dec 2011 19:18:11 +0000 Subject: [PATCH] Unordered: Fix forwarding from emplace. [SVN r75856] --- include/boost/unordered/unordered_map.hpp | 50 +++++++++++++++++------ include/boost/unordered/unordered_set.hpp | 48 ++++++++++++++++------ 2 files changed, 73 insertions(+), 25 deletions(-) diff --git a/include/boost/unordered/unordered_map.hpp b/include/boost/unordered/unordered_map.hpp index 61025fd4..6e44ed6b 100644 --- a/include/boost/unordered/unordered_map.hpp +++ b/include/boost/unordered/unordered_map.hpp @@ -78,7 +78,7 @@ namespace unordered private: table table_; - + public: // constructors @@ -251,7 +251,8 @@ namespace unordered std::pair emplace(BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ); } @@ -259,7 +260,8 @@ namespace unordered iterator emplace_hint(const_iterator, BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ).first; } @@ -269,7 +271,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ); } @@ -279,7 +283,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ).first; } @@ -290,7 +296,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ); } @@ -301,7 +310,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ).first; } @@ -700,7 +712,8 @@ namespace unordered iterator emplace(BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ); } @@ -708,7 +721,8 @@ namespace unordered iterator emplace_hint(const_iterator, BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ); } @@ -718,7 +732,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ); } @@ -728,7 +744,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ); } @@ -739,7 +757,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ); } @@ -750,7 +771,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ); } diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index 3f3ed6ba..f23ea74f 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -249,7 +249,8 @@ namespace unordered std::pair emplace(BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ); } @@ -257,7 +258,8 @@ namespace unordered iterator emplace_hint(const_iterator, BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ).first; } @@ -267,7 +269,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ); } @@ -277,7 +281,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ).first; } @@ -288,7 +294,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ); } @@ -299,7 +308,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ).first; } @@ -683,7 +695,8 @@ namespace unordered iterator emplace(BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ); } @@ -691,7 +704,8 @@ namespace unordered iterator emplace_hint(const_iterator, BOOST_FWD_REF(A0) a0) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0) + boost::unordered::detail::create_emplace_args( + boost::forward(a0)) ); } @@ -701,7 +715,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ); } @@ -711,7 +727,9 @@ namespace unordered BOOST_FWD_REF(A1) a1) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1)) ); } @@ -722,7 +740,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ); } @@ -733,7 +754,10 @@ namespace unordered BOOST_FWD_REF(A2) a2) { return table_.emplace( - boost::unordered::detail::create_emplace_args(a0, a1, a2) + boost::unordered::detail::create_emplace_args( + boost::forward(a0), + boost::forward(a1), + boost::forward(a2)) ); }