From 6ff7d4c56c26a2b7546de633dbcfe2f163bf846d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Wed, 11 Sep 2019 16:06:35 +0200
Subject: [PATCH] C++17: use structured bindings instead of std::tie

---
 dynare++/kord/faa_di_bruno.cc                        |  6 ++----
 dynare++/tl/cc/kron_prod.cc                          |  6 ++----
 .../local_state_space_iteration_2.cc                 | 12 ++++--------
 3 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/dynare++/kord/faa_di_bruno.cc b/dynare++/kord/faa_di_bruno.cc
index 0615be57e8..fa575c907e 100644
--- a/dynare++/kord/faa_di_bruno.cc
+++ b/dynare++/kord/faa_di_bruno.cc
@@ -34,8 +34,7 @@ FaaDiBruno::calculate(const StackContainer<FGSTensor> &cont,
   out.zeros();
   for (int l = 1; l <= out.dimen(); l++)
     {
-      int max, mem_mb, p_size_mb;
-      std::tie(max, mem_mb, p_size_mb) = estimRefinement(out.getDims(), out.nrows(), l);
+      auto [max, mem_mb, p_size_mb] = estimRefinement(out.getDims(), out.nrows(), l);
       FoldedFineContainer fine_cont(cont, max);
       fine_cont.multAndAdd(l, f, out);
       JournalRecord recc(journal);
@@ -73,8 +72,7 @@ FaaDiBruno::calculate(const StackContainer<UGSTensor> &cont,
   out.zeros();
   for (int l = 1; l <= out.dimen(); l++)
     {
-      int max, mem_mb, p_size_mb;
-      std::tie(max, mem_mb, p_size_mb) = estimRefinement(out.getDims(), out.nrows(), l);
+      auto [max, mem_mb, p_size_mb] = estimRefinement(out.getDims(), out.nrows(), l);
       UnfoldedFineContainer fine_cont(cont, max);
       fine_cont.multAndAdd(l, f, out);
       JournalRecord recc(journal);
diff --git a/dynare++/tl/cc/kron_prod.cc b/dynare++/tl/cc/kron_prod.cc
index 7e5c67f896..b37e490f8f 100644
--- a/dynare++/tl/cc/kron_prod.cc
+++ b/dynare++/tl/cc/kron_prod.cc
@@ -86,8 +86,7 @@ KronProdDimens::KronProdDimens(const KronProdDimens &kd, int i)
 void
 KronProd::checkDimForMult(const ConstTwoDMatrix &in, const TwoDMatrix &out) const
 {
-  int my_rows, my_cols;
-  std::tie(my_rows, my_cols) = kpd.getRC();
+  auto [my_rows, my_cols] = kpd.getRC();
   TL_RAISE_IF(in.nrows() != out.nrows() || in.ncols() != my_rows,
               "Wrong dimensions for KronProd in KronProd::checkDimForMult");
 }
@@ -231,8 +230,7 @@ KronProdIAI::mult(const ConstTwoDMatrix &in, TwoDMatrix &out) const
   int id_cols = kpd.cols[0];
 
   KronProdAI akronid(*this);
-  int in_bl_width, out_bl_width;
-  std::tie(in_bl_width, out_bl_width) = akronid.kpd.getRC();
+  auto [in_bl_width, out_bl_width] = akronid.kpd.getRC();
 
   for (int i = 0; i < id_cols; i++)
     {
diff --git a/mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc b/mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc
index 48672df84a..15b422771a 100644
--- a/mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc
+++ b/mex/sources/local_state_space_iterations/local_state_space_iteration_2.cc
@@ -61,10 +61,8 @@ ss2Iteration_pruning(double *y2, double *y1, const double *yhat2, const double *
   const double one = 1.0;
   const blas_int ONE = 1;
 #endif
-  std::vector<int> ii1, ii2, ii3;// vector indices for ghxx
-  std::tie(ii1, ii2, ii3) = set_vector_of_indices(n, m);
-  std::vector<int> jj1, jj2, jj3;// vector indices for ghuu
-  std::tie(jj1, jj2, jj3) = set_vector_of_indices(q, m);
+  auto [ii1, ii2, ii3] = set_vector_of_indices(n, m); // vector indices for ghxx
+  auto [jj1, jj2, jj3] = set_vector_of_indices(q, m); // vector indices for ghuu
 #pragma omp parallel for num_threads(number_of_threads)
   for (int particle = 0; particle < s; particle++)
     {
@@ -147,10 +145,8 @@ ss2Iteration(double *y, const double *yhat, const double *epsilon,
   const double one = 1.0;
   const blas_int ONE = 1;
 #endif
-  std::vector<int> ii1, ii2, ii3;// vector indices for ghxx
-  std::tie(ii1, ii2, ii3) = set_vector_of_indices(n, m);
-  std::vector<int> jj1, jj2, jj3;// vector indices for ghuu
-  std::tie(jj1, jj2, jj3) = set_vector_of_indices(q, m);
+  auto [ii1, ii2, ii3] = set_vector_of_indices(n, m); // vector indices for ghxx
+  auto [jj1, jj2, jj3] = set_vector_of_indices(q, m); // vector indices for ghuu
 #pragma omp parallel for num_threads(number_of_threads)
   for (int particle = 0; particle < s; particle++)
     {
-- 
GitLab