bool STObject::equivalentSTObjectSameTemplate ( STObject const& obj1, STObject const& obj2) { assert (obj1.mType != nullptr); assert (obj1.mType == obj2.mType); return std::equal (obj1.begin (), obj1.end (), obj2.begin (), obj2.end (), [] (STBase const& st1, STBase const& st2) { return (st1.getSType() == st2.getSType()) && st1.isEquivalent (st2); }); }