void IndexSet::intersection(const IndexSet& s1, const IndexSet& s2) { int start = std::max(s1.offset(), s2.offset()); int end = std::min(s1.offset() + s1.size(), s2.offset() + s2.size()); int interN = end - start; if(interN < 0) { interN = 0; start = -1; } this->offset_ = start; this->size_ = interN; }