@@ -182,7 +182,7 @@ class DynamicPatchBase {
182
182
class DynamicUnknownPatch : public DynamicPatchBase {
183
183
public:
184
184
void assign (Object v);
185
- void removeMulti (const detail::ValueSet& v);
185
+ void removeMulti (detail::ValueSet v);
186
186
void patchIfSet (FieldId, const DynamicPatch&);
187
187
188
188
void fromObject (detail::Badge badge, Object obj) {
@@ -338,10 +338,10 @@ class DynamicSetPatch : public DynamicPatchBase {
338
338
}
339
339
}
340
340
341
- void removeMulti (detail::Badge badge, const detail::ValueSet& remove) {
342
- for ( const auto & i : remove ) {
343
- erase (badge, i );
344
- }
341
+ void removeMulti (detail::Badge badge, detail::ValueSet remove) {
342
+ remove . eraseInto ( remove . begin (), remove . end (), [&]( auto && k ) {
343
+ erase (badge, std::move (k) );
344
+ });
345
345
}
346
346
347
347
private:
@@ -416,10 +416,8 @@ class DynamicMapPatch {
416
416
void erase (Value k);
417
417
418
418
void tryPutMulti (detail::ValueMap v);
419
- void removeMulti (const detail::ValueSet& v) {
420
- for (const auto & k : v) {
421
- erase (k);
422
- }
419
+ void removeMulti (detail::ValueSet v) {
420
+ v.eraseInto (v.begin (), v.end (), [&](auto && k) { erase (std::move (k)); });
423
421
}
424
422
void putMulti (detail::ValueMap m) {
425
423
detail::checkHomogeneousContainer (m);
@@ -880,7 +878,8 @@ void DynamicUnknownPatch::customVisitImpl(Self&& self, Visitor&& v) {
880
878
}
881
879
882
880
if (auto remove = self.get_ptr (op::PatchOp::Remove)) {
883
- std::forward<Visitor>(v).removeMulti (remove ->as_set ());
881
+ std::forward<Visitor>(v).removeMulti (
882
+ folly::forward_like<Self>(remove ->as_set ()));
884
883
}
885
884
}
886
885
0 commit comments