From 827eae2d1d2f62c00db21e1d43aabf904dd8ff8d Mon Sep 17 00:00:00 2001 From: Kenneth Heafield Date: Mon, 27 Jan 2014 22:18:14 -0800 Subject: Another attempted fix at the sorting iterator for C++11 --- klm/util/joint_sort.hh | 2 +- klm/util/joint_sort_test.cc | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/klm/util/joint_sort.hh b/klm/util/joint_sort.hh index 5589c558..b1ec48e2 100644 --- a/klm/util/joint_sort.hh +++ b/klm/util/joint_sort.hh @@ -90,7 +90,7 @@ template class JointProxy { } friend void swap(JointProxy first, JointProxy second) { - first.DeepSwap(second); + first.Inner().DeepSwap(second.Inner()); } private: diff --git a/klm/util/joint_sort_test.cc b/klm/util/joint_sort_test.cc index 4dc85916..b24c602c 100644 --- a/klm/util/joint_sort_test.cc +++ b/klm/util/joint_sort_test.cc @@ -47,4 +47,16 @@ BOOST_AUTO_TEST_CASE(char_int) { BOOST_CHECK_EQUAL(327, values[3]); } +BOOST_AUTO_TEST_CASE(swap_proxy) { + char keys[2] = {0, 1}; + int values[2] = {2, 3}; + detail::JointProxy first(keys, values); + detail::JointProxy second(keys + 1, values + 1); + swap(first, second); + BOOST_CHECK_EQUAL(1, keys[0]); + BOOST_CHECK_EQUAL(0, keys[1]); + BOOST_CHECK_EQUAL(3, values[0]); + BOOST_CHECK_EQUAL(2, values[1]); +} + }} // namespace anonymous util -- cgit v1.2.3