diff --git a/src/ModelTree.cc b/src/ModelTree.cc index bd96cf0e00fa4f25c64fd6c16e8503a6e492b9b0..1998fbfa3533e88431d8e0ef899d6357d7694d8e 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -971,12 +971,8 @@ ModelTree::computeTemporaryTerms(bool is_matlab, bool no_tmp_terms) not optional) */ if (no_tmp_terms) for (auto &it : temp_terms_map) - // The following loop can be simplified with std::erase_if() in C++20 - for (auto it2 = it.second.begin(); it2 != it.second.end();) - if (!dynamic_cast<AbstractExternalFunctionNode *>(*it2)) - it2 = it.second.erase(it2); - else - ++it2; + erase_if(it.second, + [](expr_t e) { return !dynamic_cast<AbstractExternalFunctionNode *>(e); }); // Fill the structures temporary_terms_derivatives.clear(); diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc index 0c0be897be1158285dd422101fed18127d9731b6..f43dedc3549a863752c87f881d065f0926f8ae4a 100644 --- a/src/ParsingDriver.cc +++ b/src/ParsingDriver.cc @@ -369,12 +369,8 @@ ParsingDriver::declare_or_change_type(SymbolType new_type, const string &name) // remove error messages undeclared_model_vars.erase(name); - for (auto it = undeclared_model_variable_errors.begin(); - it != undeclared_model_variable_errors.end();) - if (it->first == name) - it = undeclared_model_variable_errors.erase(it); - else - ++it; + erase_if(undeclared_model_variable_errors, + [&name](auto &v) { return v.first == name; }); } catch (SymbolTable::UnknownSymbolNameException &e) {