diff --git a/p2p/client/basic_port_allocator.cc b/p2p/client/basic_port_allocator.cc index 216e737ffb..527410a0f0 100644 --- a/p2p/client/basic_port_allocator.cc +++ b/p2p/client/basic_port_allocator.cc @@ -95,15 +95,16 @@ int ComparePort(const cricket::Port* a, const cricket::Port* b) { struct NetworkFilter { using Predicate = std::function; NetworkFilter(Predicate pred, const std::string& description) - : pred(pred), description(description) {} - Predicate pred; + : predRemain([pred](rtc::Network* network) { return !pred(network); }), + description(description) {} + Predicate predRemain; const std::string description; }; using NetworkList = rtc::NetworkManager::NetworkList; void FilterNetworks(NetworkList* networks, NetworkFilter filter) { auto start_to_remove = - std::remove_if(networks->begin(), networks->end(), filter.pred); + std::partition(networks->begin(), networks->end(), filter.predRemain); if (start_to_remove == networks->end()) { return; }