bool equals(const abstract_tuple& other) const { if (size() != other.size()) return false; const tuple_vals* o = dynamic_cast<const tuple_vals*>(&other); if (o) { return m_data == (o->m_data); } return abstract_tuple::equals(other); }
bool abstract_tuple::equals(const abstract_tuple &other) const { return this == &other || ( size() == other.size() && std::equal(begin(), end(), other.begin(), detail::full_eq)); }
bool empty_tuple::equals(const abstract_tuple& other) const { return other.size() == 0; }