From 51c111190dd80a8f156886fb43660e18a827d412 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Fri, 19 Jul 2024 12:21:38 +0200
Subject: [PATCH] C++20 modernization: use std::ranges::copy

---
 src/DataTree.cc    |  4 ++--
 src/ModelTree.cc   | 17 ++++++++---------
 src/StaticModel.cc |  6 +++---
 3 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/src/DataTree.cc b/src/DataTree.cc
index 3f7b452e..5f77077a 100644
--- a/src/DataTree.cc
+++ b/src/DataTree.cc
@@ -972,7 +972,7 @@ DataTree::writeToFileIfModified(stringstream& new_contents, const filesystem::pa
       cerr << "ERROR: Can't open file " << filename.string() << " for writing" << endl;
       exit(EXIT_FAILURE);
     }
-  copy(istreambuf_iterator<char> {new_contents}, istreambuf_iterator<char> {},
-       ostreambuf_iterator<char> {new_file});
+  ranges::copy(istreambuf_iterator<char> {new_contents}, istreambuf_iterator<char> {},
+               ostreambuf_iterator<char> {new_file});
   new_file.close();
 }
diff --git a/src/ModelTree.cc b/src/ModelTree.cc
index 533a13ce..99d844bf 100644
--- a/src/ModelTree.cc
+++ b/src/ModelTree.cc
@@ -983,9 +983,9 @@ ModelTree::computeTemporaryTerms(bool is_matlab, bool no_tmp_terms)
   temporary_terms_derivatives.clear();
   temporary_terms_derivatives.resize(derivatives.size());
   for (int order = 0; order < static_cast<int>(derivatives.size()); order++)
-    copy(temp_terms_map[{order, 0}].begin(), temp_terms_map[{order, 0}].end(),
-         inserter(temporary_terms_derivatives.at(order),
-                  temporary_terms_derivatives.at(order).begin()));
+    ranges::copy(temp_terms_map[{order, 0}],
+                 inserter(temporary_terms_derivatives.at(order),
+                          temporary_terms_derivatives.at(order).begin()));
 
   // Compute indices in MATLAB/Julia vector
   for (int order {0}, idx {0}; order < static_cast<int>(derivatives.size()); order++)
@@ -1038,9 +1038,9 @@ ModelTree::computeBlockTemporaryTerms(bool no_tmp_terms)
     {
       blocks_temporary_terms.at(blk).resize(temp_terms.at(blk).size());
       for (size_t i {0}; i < temp_terms.at(blk).size(); i++)
-        copy(temp_terms.at(blk).at(i).begin(), temp_terms.at(blk).at(i).end(),
-             inserter(blocks_temporary_terms.at(blk).at(i),
-                      blocks_temporary_terms.at(blk).at(i).begin()));
+        ranges::copy(temp_terms.at(blk).at(i),
+                     inserter(blocks_temporary_terms.at(blk).at(i),
+                              blocks_temporary_terms.at(blk).at(i).begin()));
     }
 
   // Compute indices in the temporary terms vector
@@ -1544,9 +1544,8 @@ ModelTree::computeParamsDerivativesTemporaryTerms()
       d->computeTemporaryTerms(order, temp_terms_map, reference_count, true);
 
   for (const auto& [order, tts] : temp_terms_map)
-    copy(temp_terms_map[order].begin(), temp_terms_map[order].end(),
-         inserter(params_derivs_temporary_terms[order],
-                  params_derivs_temporary_terms[order].begin()));
+    ranges::copy(temp_terms_map[order], inserter(params_derivs_temporary_terms[order],
+                                                 params_derivs_temporary_terms[order].begin()));
 
   for (int idx {0}; const auto& [order, tts] : params_derivs_temporary_terms)
     for (const auto& tt : tts)
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index 8a221238..dbf81f5d 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -669,9 +669,9 @@ StaticModel::computeRamseyMultipliersDerivatives(int ramsey_orig_endo_nbr, bool
   if (no_tmp_terms)
     for (auto& it : temp_terms_map)
       erase_if(it.second, [](expr_t e) { return !dynamic_cast<AbstractExternalFunctionNode*>(e); });
-  copy(temp_terms_map[{1, 0}].begin(), temp_terms_map[{1, 0}].end(),
-       inserter(ramsey_multipliers_derivatives_temporary_terms,
-                ramsey_multipliers_derivatives_temporary_terms.begin()));
+  ranges::copy(temp_terms_map[{1, 0}],
+               inserter(ramsey_multipliers_derivatives_temporary_terms,
+                        ramsey_multipliers_derivatives_temporary_terms.begin()));
   for (int idx {0}; auto it : ramsey_multipliers_derivatives_temporary_terms)
     ramsey_multipliers_derivatives_temporary_terms_idxs[it] = idx++;
 
-- 
GitLab