diff options
author | Patrick Simianer <p@simianer.de> | 2014-01-28 15:35:31 +0100 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2014-01-28 15:35:31 +0100 |
commit | 9c9ba8954358f791a818b3eefda2c0eb805bbd97 (patch) | |
tree | 0153350406bf1c9c6aafa8e5da5d4b3feb9cd0c9 /klm/util/joint_sort.hh | |
parent | 1b0d40959f529b67db3b9d10dbf93101e0c65c7c (diff) | |
parent | 19de646f60d4fb52ddd26d25e06f50f8717fd988 (diff) |
resolv conflict in mira
Diffstat (limited to 'klm/util/joint_sort.hh')
-rw-r--r-- | klm/util/joint_sort.hh | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/klm/util/joint_sort.hh b/klm/util/joint_sort.hh index 1b43ddcf..b1ec48e2 100644 --- a/klm/util/joint_sort.hh +++ b/klm/util/joint_sort.hh @@ -9,7 +9,6 @@ #include <algorithm> #include <functional> -#include <iostream> namespace util { @@ -35,9 +34,16 @@ template <class KeyIter, class ValueIter> class JointIter { return *this; } - void swap(const JointIter &other) { - std::swap(key_, other.key_); - std::swap(value_, other.value_); + friend void swap(JointIter &first, JointIter &second) { + using std::swap; + swap(first.key_, second.key_); + swap(first.value_, second.value_); + } + + void DeepSwap(JointIter &other) { + using std::swap; + swap(*key_, *other.key_); + swap(*value_, *other.value_); } private: @@ -83,9 +89,8 @@ template <class KeyIter, class ValueIter> class JointProxy { return *(inner_.key_); } - void swap(JointProxy<KeyIter, ValueIter> &other) { - std::swap(*inner_.key_, *other.inner_.key_); - std::swap(*inner_.value_, *other.inner_.value_); + friend void swap(JointProxy<KeyIter, ValueIter> first, JointProxy<KeyIter, ValueIter> second) { + first.Inner().DeepSwap(second.Inner()); } private: @@ -138,14 +143,4 @@ template <class KeyIter, class ValueIter> void JointSort(const KeyIter &key_begi } // namespace util -namespace std { -template <class KeyIter, class ValueIter> void swap(util::detail::JointIter<KeyIter, ValueIter> &left, util::detail::JointIter<KeyIter, ValueIter> &right) { - left.swap(right); -} - -template <class KeyIter, class ValueIter> void swap(util::detail::JointProxy<KeyIter, ValueIter> &left, util::detail::JointProxy<KeyIter, ValueIter> &right) { - left.swap(right); -} -} // namespace std - #endif // UTIL_JOINT_SORT__ |