summaryrefslogtreecommitdiff
path: root/klm/util
diff options
context:
space:
mode:
authorKenneth Heafield <github@kheafield.com>2014-01-27 22:18:14 -0800
committerKenneth Heafield <github@kheafield.com>2014-01-27 22:18:14 -0800
commit80d4acfb24ed0d72e22caafcc17fa4def686bd78 (patch)
treec1ac53703b6e1336055b20e5bd2bc52c7a4c4323 /klm/util
parentb627e35758a8a13944424e811c5742a6d3dd526e (diff)
Another attempted fix at the sorting iterator for C++11
Diffstat (limited to 'klm/util')
-rw-r--r--klm/util/joint_sort.hh2
-rw-r--r--klm/util/joint_sort_test.cc12
2 files changed, 13 insertions, 1 deletions
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 KeyIter, class ValueIter> class JointProxy {
}
friend void swap(JointProxy<KeyIter, ValueIter> first, JointProxy<KeyIter, ValueIter> 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<char *, int *> first(keys, values);
+ detail::JointProxy<char *, int *> 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