diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 1138a740108dce1352ea5e97c4fc9144e6bfa3ad..f19944764c8c2e424e55d9112ad3a224097153ec 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -390,7 +390,7 @@ ModelTree::evaluateAndReduceJacobian(const eval_context_t& eval_context) const int eq = indices[0]; int var {getTypeSpecificIDByDerivID(deriv_id)}; int lag = getLagByDerivID(deriv_id); - double val {[&] { + double val {[&, d1 = d1] { try { return d1->eval(eval_context); // NOLINT(clang-analyzer-core.NullDereference) diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc index 132119df417875e1e202c06dc79d5b64c056079b..4469f8e58dc880d074eaa4825449c1aeb1bc340c 100644 --- a/src/ParsingDriver.cc +++ b/src/ParsingDriver.cc @@ -2659,7 +2659,7 @@ ParsingDriver::add_model_equal(expr_t arg1, expr_t arg2, map<string, string> eq_ constant.erase(constant.find_last_not_of(" \n\t") + 1); constant.erase(0, constant.find_first_not_of(" \n\t")); - int symb_id {[&] { + int symb_id {[&, &var_name = var_name] { try { return mod_file->symbol_table.getID(var_name); @@ -2673,7 +2673,7 @@ ParsingDriver::add_model_equal(expr_t arg1, expr_t arg2, map<string, string> eq_ if (mod_file->symbol_table.getType(symb_id) != SymbolType::endogenous) error("Left-hand side of expression in 'mcp' tag is not an endogenous variable"); - expr_t matched_constant {[&] { + expr_t matched_constant {[&, &constant = constant] { char* str_end; double d = strtod(constant.c_str(), &str_end); if (str_end == constant.c_str()) diff --git a/src/Statement.cc b/src/Statement.cc index e28d7f404ad9c9cbc89e950424096af34c163bf4..cd1f0230efd0a6dc2cc7e00a5cca3b48d8bb9993 100644 --- a/src/Statement.cc +++ b/src/Statement.cc @@ -191,7 +191,7 @@ OptionsList::writeOutputCommon(ostream& output, const string& option_group) cons // NOLINTBEGIN(clang-analyzer-core.CallAndMessage) for (const auto& [name, val] : options) std::visit( - [&]<class T>(const T& v) { + [&, &name = name, &val = val]<class T>(const T& v) { if constexpr (is_same_v<T, SymbolListVal>) v.writeOutput(option_group + "." + name, output); else diff --git a/src/SubModel.cc b/src/SubModel.cc index 411fb29b2a3108f3ca398ae9d21f8d6ac7ddae7c..be4b00f3e9d086ed67075b20586122daa575e891 100644 --- a/src/SubModel.cc +++ b/src/SubModel.cc @@ -1284,9 +1284,10 @@ PacModelTable::transformPass(const lag_equivalence_table_t& unary_ops_nodes, // Associate the coefficients of the linear combination with the right components for (auto [var, coeff] : terms) - if (auto it = find_if( - components.begin(), components.end(), - [&](const auto& v) { return get<0>(v) == dynamic_model.AddVariable(var); }); + if (auto it = find_if(components.begin(), components.end(), + [&, &var = var](const auto& v) { + return get<0>(v) == dynamic_model.AddVariable(var); + }); it != components.end()) get<4>(*it) = coeff; else