Just looked at the code in detail. Why does this segfault? data_processing is a vector, so data_processing.size() should always work. Logical evaluation is from left to right, so if data_processing_.size() == rhs.data_processing_.size() fails than std::equal(...) should not be evaluated, right?