I've decided to utilize const_cast
, override=
, and swap
to make sorting work:
template <class KEY, class VALUE>
class Wrapper {
std::pair<const KEY, VALUE> d_data;
public:
Wrapper& operator=(const Wrapper &rhs) {
const_cast<KEY&>(d_data.first) = rhs.d_data.first;
d_data.second = rhs.d_data.second;
}
std::pair<const KEY, VALUE>& data() { return d_data; }
std::pair<const KEY, VALUE> const& data() const { return d_data; }
};
template <class KEY, class VALUE>
void swap(Wrapper<KEY, VALUE>& a, Wrapper<KEY, VALUE>& b) {
using std::swap;
swap(const_cast<KEY&>(a.data().first), const_cast<KEY&>(b.data().first));
swap(a.data().second, b.data().second);
}