bool equal_aux(self_t const& other, boost::forward_traversal_tag) const { if (is_end() != other.is_end()) return false; else if (is_end() && other.is_end()) return true; else { BOOST_ASSERT(!is_end() && !other.is_end()); return *m_result == *other.m_result; } }
bool equal_aux(self_t const& other, boost::single_pass_traversal_tag) const { return is_end() == other.is_end(); }
bool equal(self_t const& other) const { return is_end() == other.is_end(); }