From 20bbbd46c3d8ef707a4879717add86a58ef7e11d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Mon, 4 Jun 2018 12:31:07 +0200
Subject: [PATCH] Port some constructors to pass-by-value using C++11 move
 semantics

Performed using modernize-pass-by-value from clang-tidy.

Manual intervention was needed to fix an issue in MacroValue.hh.
Also replace std::move by move, since we import the std namespace.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-pass-by-value.html
---
 src/CodeInterpreter.hh         |   3 +-
 src/ComputingTasks.cc          | 487 +++++++++++++++++----------------
 src/ComputingTasks.hh          | 240 ++++++++--------
 src/ConfigFile.cc              |   9 +-
 src/ConfigFile.hh              |   2 +-
 src/DataTree.hh                |   5 +-
 src/ExprNode.cc                |  15 +-
 src/ExprNode.hh                |   6 +-
 src/NumericalInitialization.cc |  25 +-
 src/NumericalInitialization.hh |  12 +-
 src/Shocks.cc                  |  39 +--
 src/Shocks.hh                  |  20 +-
 src/SigmaeInitialization.cc    |   6 +-
 src/SigmaeInitialization.hh    |   2 +-
 src/Statement.cc               |   9 +-
 src/Statement.hh               |   4 +-
 src/SymbolTable.hh             |   5 +-
 src/macro/MacroDriver.hh       |   7 +-
 src/macro/MacroValue.cc        |   6 +-
 src/macro/MacroValue.hh        |   9 +-
 20 files changed, 463 insertions(+), 448 deletions(-)

diff --git a/src/CodeInterpreter.hh b/src/CodeInterpreter.hh
index 8de750a7..7fdaace4 100644
--- a/src/CodeInterpreter.hh
+++ b/src/CodeInterpreter.hh
@@ -26,6 +26,7 @@
 #include <cstdio>
 #include <fstream>
 #include <cstring>
+#include <utility>
 #include <vector>
 #ifdef LINBCG
 # include "linbcg.hh"
@@ -405,7 +406,7 @@ public:
   {
   };
   inline
-  TagWithFourArguments(uint8_t op_code_arg, T1 arg_arg1, T2 arg_arg2, T3 arg_arg3, T4 arg_arg4) : op_code(op_code_arg), arg1(arg_arg1), arg2(arg_arg2), arg3(arg_arg3), arg4(arg_arg4)
+  TagWithFourArguments(uint8_t op_code_arg, T1 arg_arg1, T2 arg_arg2, T3 arg_arg3, T4 arg_arg4) : op_code(op_code_arg), arg1(arg_arg1), arg2(arg_arg2), arg3(move(arg_arg3)), arg4(arg_arg4)
   {
   };
   inline void
diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index 9747055f..df019612 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -31,9 +31,10 @@ using namespace std;
 #include <boost/algorithm/string/split.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/tokenizer.hpp>
+#include <utility>
 
-SteadyStatement::SteadyStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+SteadyStatement::SteadyStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -62,8 +63,8 @@ SteadyStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-CheckStatement::CheckStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+CheckStatement::CheckStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -92,8 +93,8 @@ CheckStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-ModelInfoStatement::ModelInfoStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+ModelInfoStatement::ModelInfoStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -122,8 +123,8 @@ ModelInfoStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-SimulStatement::SimulStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+SimulStatement::SimulStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -153,8 +154,8 @@ SimulStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-PerfectForesightSetupStatement::PerfectForesightSetupStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+PerfectForesightSetupStatement::PerfectForesightSetupStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -177,8 +178,8 @@ PerfectForesightSetupStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-PerfectForesightSolverStatement::PerfectForesightSolverStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+PerfectForesightSolverStatement::PerfectForesightSolverStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -211,9 +212,9 @@ PerfectForesightSolverStatement::writeJsonOutput(ostream &output) const
 }
 
 PriorPosteriorFunctionStatement::PriorPosteriorFunctionStatement(const bool prior_func_arg,
-                                                                 const OptionsList &options_list_arg) :
+                                                                 OptionsList options_list_arg) :
   prior_func(prior_func_arg),
-  options_list(options_list_arg)
+  options_list(move(options_list_arg))
 {
 }
 
@@ -262,13 +263,13 @@ PacModelStatement::PacModelStatement(const string &name_arg,
                                      const string &var_name_arg,
                                      const string &discount_arg,
                                      const string &growth_arg,
-                                     const map<string, int> &undiff_arg,
+                                     map<string, int> undiff_arg,
                                      const SymbolTable &symbol_table_arg) :
   name(name_arg),
   var_name(var_name_arg),
   discount(discount_arg),
   growth(growth_arg),
-  undiff(undiff_arg),
+  undiff(move(undiff_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -381,12 +382,12 @@ PacModelStatement::getPacModelInfoForPacExpectation(pair<string, pair<string, pa
   pac_model_info = make_pair(name, make_pair(var_name, make_pair(discount, make_pair(growth_symb_id, undiff))));
 }
 
-VarModelStatement::VarModelStatement(const SymbolList &symbol_list_arg,
-                                     const OptionsList &options_list_arg,
+VarModelStatement::VarModelStatement(SymbolList symbol_list_arg,
+                                     OptionsList options_list_arg,
                                      const string &name_arg,
                                      const SymbolTable &symbol_table_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg),
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg)),
   name(name_arg),
   symbol_table(symbol_table_arg)
 {
@@ -546,8 +547,8 @@ VarModelStatement::createVarModelMFunction(ostream &output, const map<string, se
   output << ");" << endl;
 }
 
-VarEstimationStatement::VarEstimationStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+VarEstimationStatement::VarEstimationStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -571,19 +572,19 @@ VarEstimationStatement::writeOutput(ostream &output, const string &basename, boo
 
 VarRestrictionsStatement::VarRestrictionsStatement(const string &var_model_name_arg,
                                                    const map<string, vector<string> > &var_map_arg,
-                                                   const map<int, map<int, SymbolList> > &exclusion_restrictions_arg,
-                                                   const equation_restrictions_t &equation_restrictions_arg,
-                                                   const crossequation_restrictions_t &crossequation_restrictions_arg,
-                                                   const map<pair<int, int>, double> &covariance_number_restriction_arg,
-                                                   const map<pair<int, int>, pair<int, int> > &covariance_pair_restriction_arg,
+                                                   map<int, map<int, SymbolList> > exclusion_restrictions_arg,
+                                                   equation_restrictions_t equation_restrictions_arg,
+                                                   crossequation_restrictions_t crossequation_restrictions_arg,
+                                                   map<pair<int, int>, double> covariance_number_restriction_arg,
+                                                   map<pair<int, int>, pair<int, int> > covariance_pair_restriction_arg,
                                                    const SymbolTable &symbol_table_arg) :
   var_model_name(var_model_name_arg),
   var_map(var_map_arg),
-  exclusion_restrictions(exclusion_restrictions_arg),
-  equation_restrictions(equation_restrictions_arg),
-  crossequation_restrictions(crossequation_restrictions_arg),
-  covariance_number_restriction(covariance_number_restriction_arg),
-  covariance_pair_restriction(covariance_pair_restriction_arg),
+  exclusion_restrictions(move(exclusion_restrictions_arg)),
+  equation_restrictions(move(equation_restrictions_arg)),
+  crossequation_restrictions(move(crossequation_restrictions_arg)),
+  covariance_number_restriction(move(covariance_number_restriction_arg)),
+  covariance_pair_restriction(move(covariance_pair_restriction_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -744,10 +745,10 @@ VarRestrictionsStatement::writeOutput(ostream &output, const string &basename, b
   output << Mstr << "N = " << nrestrictions << ";" << endl;
 }
 
-StochSimulStatement::StochSimulStatement(const SymbolList &symbol_list_arg,
-                                         const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+StochSimulStatement::StochSimulStatement(SymbolList symbol_list_arg,
+                                         OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -817,10 +818,10 @@ StochSimulStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-ForecastStatement::ForecastStatement(const SymbolList &symbol_list_arg,
-                                     const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+ForecastStatement::ForecastStatement(SymbolList symbol_list_arg,
+                                     OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -849,8 +850,8 @@ ForecastStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-RamseyModelStatement::RamseyModelStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+RamseyModelStatement::RamseyModelStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -916,9 +917,9 @@ RamseyModelStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-RamseyConstraintsStatement::RamseyConstraintsStatement(const SymbolTable &symbol_table_arg, const constraints_t &constraints_arg) :
+RamseyConstraintsStatement::RamseyConstraintsStatement(const SymbolTable &symbol_table_arg, constraints_t constraints_arg) :
   symbol_table(symbol_table_arg),
-  constraints(constraints_arg)
+  constraints(move(constraints_arg))
 {
 }
 
@@ -1000,11 +1001,11 @@ RamseyConstraintsStatement::writeJsonOutput(ostream &output) const
 }
 
 RamseyPolicyStatement::RamseyPolicyStatement(const SymbolTable &symbol_table_arg,
-                                             const vector<string> &ramsey_policy_list_arg,
-                                             const OptionsList &options_list_arg) :
+                                             vector<string> ramsey_policy_list_arg,
+                                             OptionsList options_list_arg) :
   symbol_table(symbol_table_arg),
-  ramsey_policy_list(ramsey_policy_list_arg),
-  options_list(options_list_arg)
+  ramsey_policy_list(move(ramsey_policy_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -1106,10 +1107,10 @@ RamseyPolicyStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-DiscretionaryPolicyStatement::DiscretionaryPolicyStatement(const SymbolList &symbol_list_arg,
-                                                           const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+DiscretionaryPolicyStatement::DiscretionaryPolicyStatement(SymbolList symbol_list_arg,
+                                                           OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -1183,10 +1184,10 @@ DiscretionaryPolicyStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-EstimationStatement::EstimationStatement(const SymbolList &symbol_list_arg,
-                                         const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+EstimationStatement::EstimationStatement(SymbolList symbol_list_arg,
+                                         OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -1305,8 +1306,8 @@ EstimationStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-DynareSensitivityStatement::DynareSensitivityStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+DynareSensitivityStatement::DynareSensitivityStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -1353,8 +1354,8 @@ DynareSensitivityStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-RplotStatement::RplotStatement(const SymbolList &symbol_list_arg) :
-  symbol_list(symbol_list_arg)
+RplotStatement::RplotStatement(SymbolList symbol_list_arg) :
+  symbol_list(move(symbol_list_arg))
 {
 }
 
@@ -1438,9 +1439,9 @@ DsampleStatement::writeJsonOutput(ostream &output) const
          << "\"value2\": " << val2 << "}";
 }
 
-EstimatedParamsStatement::EstimatedParamsStatement(const vector<EstimationParams> &estim_params_list_arg,
+EstimatedParamsStatement::EstimatedParamsStatement(vector<EstimationParams> estim_params_list_arg,
                                                    const SymbolTable &symbol_table_arg) :
-  estim_params_list(estim_params_list_arg),
+  estim_params_list(move(estim_params_list_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -1610,10 +1611,10 @@ EstimatedParamsStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-EstimatedParamsInitStatement::EstimatedParamsInitStatement(const vector<EstimationParams> &estim_params_list_arg,
+EstimatedParamsInitStatement::EstimatedParamsInitStatement(vector<EstimationParams> estim_params_list_arg,
                                                            const SymbolTable &symbol_table_arg,
                                                            const bool use_calibration_arg) :
-  estim_params_list(estim_params_list_arg),
+  estim_params_list(move(estim_params_list_arg)),
   symbol_table(symbol_table_arg),
   use_calibration(use_calibration_arg)
 {
@@ -1718,9 +1719,9 @@ EstimatedParamsInitStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-EstimatedParamsBoundsStatement::EstimatedParamsBoundsStatement(const vector<EstimationParams> &estim_params_list_arg,
+EstimatedParamsBoundsStatement::EstimatedParamsBoundsStatement(vector<EstimationParams> estim_params_list_arg,
                                                                const SymbolTable &symbol_table_arg) :
-  estim_params_list(estim_params_list_arg),
+  estim_params_list(move(estim_params_list_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -1837,9 +1838,9 @@ EstimatedParamsBoundsStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-ObservationTrendsStatement::ObservationTrendsStatement(const trend_elements_t &trend_elements_arg,
+ObservationTrendsStatement::ObservationTrendsStatement(trend_elements_t trend_elements_arg,
                                                        const SymbolTable &symbol_table_arg) :
-  trend_elements(trend_elements_arg),
+  trend_elements(move(trend_elements_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -1887,8 +1888,8 @@ ObservationTrendsStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-OsrParamsStatement::OsrParamsStatement(const SymbolList &symbol_list_arg, const SymbolTable &symbol_table_arg) :
-  symbol_list(symbol_list_arg),
+OsrParamsStatement::OsrParamsStatement(SymbolList symbol_list_arg, const SymbolTable &symbol_table_arg) :
+  symbol_list(move(symbol_list_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -1925,15 +1926,15 @@ OsrParamsStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-OsrStatement::OsrStatement(const SymbolList &symbol_list_arg,
-                           const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+OsrStatement::OsrStatement(SymbolList symbol_list_arg,
+                           OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
-OsrParamsBoundsStatement::OsrParamsBoundsStatement(const vector<OsrParams> &osr_params_list_arg) :
-  osr_params_list(osr_params_list_arg)
+OsrParamsBoundsStatement::OsrParamsBoundsStatement(vector<OsrParams> osr_params_list_arg) :
+  osr_params_list(move(osr_params_list_arg))
 {
 }
 
@@ -2039,11 +2040,11 @@ OsrStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-OptimWeightsStatement::OptimWeightsStatement(const var_weights_t &var_weights_arg,
-                                             const covar_weights_t &covar_weights_arg,
+OptimWeightsStatement::OptimWeightsStatement(var_weights_t var_weights_arg,
+                                             covar_weights_t covar_weights_arg,
                                              const SymbolTable &symbol_table_arg) :
-  var_weights(var_weights_arg),
-  covar_weights(covar_weights_arg),
+  var_weights(move(var_weights_arg)),
+  covar_weights(move(covar_weights_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -2119,10 +2120,10 @@ OptimWeightsStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-DynaSaveStatement::DynaSaveStatement(const SymbolList &symbol_list_arg,
-                                     const string &filename_arg) :
-  symbol_list(symbol_list_arg),
-  filename(filename_arg)
+DynaSaveStatement::DynaSaveStatement(SymbolList symbol_list_arg,
+                                     string filename_arg) :
+  symbol_list(move(symbol_list_arg)),
+  filename(move(filename_arg))
 {
 }
 
@@ -2147,10 +2148,10 @@ DynaSaveStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-DynaTypeStatement::DynaTypeStatement(const SymbolList &symbol_list_arg,
-                                     const string &filename_arg) :
-  symbol_list(symbol_list_arg),
-  filename(filename_arg)
+DynaTypeStatement::DynaTypeStatement(SymbolList symbol_list_arg,
+                                     string filename_arg) :
+  symbol_list(move(symbol_list_arg)),
+  filename(move(filename_arg))
 {
 }
 
@@ -2175,10 +2176,10 @@ DynaTypeStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-ModelComparisonStatement::ModelComparisonStatement(const filename_list_t &filename_list_arg,
-                                                   const OptionsList &options_list_arg) :
-  filename_list(filename_list_arg),
-  options_list(options_list_arg)
+ModelComparisonStatement::ModelComparisonStatement(filename_list_t filename_list_arg,
+                                                   OptionsList options_list_arg) :
+  filename_list(move(filename_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2283,9 +2284,9 @@ PlannerObjectiveStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-BVARDensityStatement::BVARDensityStatement(int maxnlags_arg, const OptionsList &options_list_arg) :
+BVARDensityStatement::BVARDensityStatement(int maxnlags_arg, OptionsList options_list_arg) :
   maxnlags(maxnlags_arg),
-  options_list(options_list_arg)
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2314,9 +2315,9 @@ BVARDensityStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-BVARForecastStatement::BVARForecastStatement(int nlags_arg, const OptionsList &options_list_arg) :
+BVARForecastStatement::BVARForecastStatement(int nlags_arg, OptionsList options_list_arg) :
   nlags(nlags_arg),
-  options_list(options_list_arg)
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2345,8 +2346,8 @@ BVARForecastStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-SBVARStatement::SBVARStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+SBVARStatement::SBVARStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2375,8 +2376,8 @@ SBVARStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVAREstimationStatement::MSSBVAREstimationStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MSSBVAREstimationStatement::MSSBVAREstimationStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2416,8 +2417,8 @@ MSSBVAREstimationStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVARSimulationStatement::MSSBVARSimulationStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MSSBVARSimulationStatement::MSSBVARSimulationStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2456,8 +2457,8 @@ MSSBVARSimulationStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVARComputeMDDStatement::MSSBVARComputeMDDStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MSSBVARComputeMDDStatement::MSSBVARComputeMDDStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2487,8 +2488,8 @@ MSSBVARComputeMDDStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVARComputeProbabilitiesStatement::MSSBVARComputeProbabilitiesStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MSSBVARComputeProbabilitiesStatement::MSSBVARComputeProbabilitiesStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2526,10 +2527,10 @@ MSSBVARComputeProbabilitiesStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVARIrfStatement::MSSBVARIrfStatement(const SymbolList &symbol_list_arg,
-                                         const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+MSSBVARIrfStatement::MSSBVARIrfStatement(SymbolList symbol_list_arg,
+                                         OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2590,8 +2591,8 @@ MSSBVARIrfStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVARForecastStatement::MSSBVARForecastStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MSSBVARForecastStatement::MSSBVARForecastStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2628,8 +2629,8 @@ MSSBVARForecastStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MSSBVARVarianceDecompositionStatement::MSSBVARVarianceDecompositionStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MSSBVARVarianceDecompositionStatement::MSSBVARVarianceDecompositionStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2812,10 +2813,10 @@ WriteLatexSteadyStateModelStatement::writeJsonOutput(ostream &output) const
   output << "{\"statementName\": \"write_latex_steady_state_model\"}";
 }
 
-ShockDecompositionStatement::ShockDecompositionStatement(const SymbolList &symbol_list_arg,
-                                                         const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+ShockDecompositionStatement::ShockDecompositionStatement(SymbolList symbol_list_arg,
+                                                         OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2844,10 +2845,10 @@ ShockDecompositionStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-RealtimeShockDecompositionStatement::RealtimeShockDecompositionStatement(const SymbolList &symbol_list_arg,
-                                                                         const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+RealtimeShockDecompositionStatement::RealtimeShockDecompositionStatement(SymbolList symbol_list_arg,
+                                                                         OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2859,10 +2860,10 @@ RealtimeShockDecompositionStatement::writeOutput(ostream &output, const string &
   output << "oo_ = realtime_shock_decomposition(M_,oo_,options_,var_list_,bayestopt_,estim_params_);" << endl;
 }
 
-PlotShockDecompositionStatement::PlotShockDecompositionStatement(const SymbolList &symbol_list_arg,
-                                                                 const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+PlotShockDecompositionStatement::PlotShockDecompositionStatement(SymbolList symbol_list_arg,
+                                                                 OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2875,10 +2876,10 @@ PlotShockDecompositionStatement::writeOutput(ostream &output, const string &base
   output << "plot_shock_decomposition(M_, oo_, options_, var_list_);" << endl;
 }
 
-InitialConditionDecompositionStatement::InitialConditionDecompositionStatement(const SymbolList &symbol_list_arg,
-                                                                               const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+InitialConditionDecompositionStatement::InitialConditionDecompositionStatement(SymbolList symbol_list_arg,
+                                                                               OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2891,8 +2892,8 @@ InitialConditionDecompositionStatement::writeOutput(ostream &output, const strin
   output << "oo_ = initial_condition_decomposition(M_, oo_, options_, var_list_, bayestopt_, estim_params_);" << endl;
 }
 
-ConditionalForecastStatement::ConditionalForecastStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+ConditionalForecastStatement::ConditionalForecastStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -2915,9 +2916,9 @@ ConditionalForecastStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-PlotConditionalForecastStatement::PlotConditionalForecastStatement(int periods_arg, const SymbolList &symbol_list_arg) :
+PlotConditionalForecastStatement::PlotConditionalForecastStatement(int periods_arg, SymbolList symbol_list_arg) :
   periods(periods_arg),
-  symbol_list(symbol_list_arg)
+  symbol_list(move(symbol_list_arg))
 {
 }
 
@@ -2944,12 +2945,12 @@ PlotConditionalForecastStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-SvarIdentificationStatement::SvarIdentificationStatement(const svar_identification_restrictions_t &restrictions_arg,
+SvarIdentificationStatement::SvarIdentificationStatement(svar_identification_restrictions_t restrictions_arg,
                                                          const bool &upper_cholesky_present_arg,
                                                          const bool &lower_cholesky_present_arg,
                                                          const bool &constants_exclusion_present_arg,
                                                          const SymbolTable &symbol_table_arg) :
-  restrictions(restrictions_arg),
+  restrictions(move(restrictions_arg)),
   upper_cholesky_present(upper_cholesky_present_arg),
   lower_cholesky_present(lower_cholesky_present_arg),
   constants_exclusion_present(constants_exclusion_present_arg),
@@ -3090,8 +3091,8 @@ SvarIdentificationStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-MarkovSwitchingStatement::MarkovSwitchingStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+MarkovSwitchingStatement::MarkovSwitchingStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
   OptionsList::num_options_t::const_iterator it_num = options_list.num_options.find("ms.restrictions");
   if (it_num != options_list.num_options.end())
@@ -3352,8 +3353,8 @@ MarkovSwitchingStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-SvarStatement::SvarStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+SvarStatement::SvarStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -3443,8 +3444,8 @@ SvarGlobalIdentificationCheckStatement::writeJsonOutput(ostream &output) const
   output << "{\"statementName\": \"svar_global_identification\"}";
 }
 
-SetTimeStatement::SetTimeStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+SetTimeStatement::SetTimeStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -3466,8 +3467,8 @@ SetTimeStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-EstimationDataStatement::EstimationDataStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+EstimationDataStatement::EstimationDataStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -3517,14 +3518,14 @@ EstimationDataStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-SubsamplesStatement::SubsamplesStatement(const string &name1_arg,
-                                         const string &name2_arg,
+SubsamplesStatement::SubsamplesStatement(string name1_arg,
+                                         string name2_arg,
                                          const subsample_declaration_map_t subsample_declaration_map_arg,
-                                         const SymbolTable &symbol_table_arg) :
-  name1(name1_arg),
-  name2(name2_arg),
+                                         SymbolTable symbol_table_arg) :
+  name1(move(name1_arg)),
+  name2(move(name2_arg)),
   subsample_declaration_map(subsample_declaration_map_arg),
-  symbol_table(symbol_table_arg)
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -3614,16 +3615,16 @@ SubsamplesStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-SubsamplesEqualStatement::SubsamplesEqualStatement(const string &to_name1_arg,
-                                                   const string &to_name2_arg,
-                                                   const string &from_name1_arg,
-                                                   const string &from_name2_arg,
-                                                   const SymbolTable &symbol_table_arg) :
-  to_name1(to_name1_arg),
-  to_name2(to_name2_arg),
-  from_name1(from_name1_arg),
-  from_name2(from_name2_arg),
-  symbol_table(symbol_table_arg)
+SubsamplesEqualStatement::SubsamplesEqualStatement(string to_name1_arg,
+                                                   string to_name2_arg,
+                                                   string from_name1_arg,
+                                                   string from_name2_arg,
+                                                   SymbolTable symbol_table_arg) :
+  to_name1(move(to_name1_arg)),
+  to_name2(move(to_name2_arg)),
+  from_name1(move(from_name1_arg)),
+  from_name2(move(from_name2_arg)),
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -3691,10 +3692,10 @@ SubsamplesEqualStatement::writeJsonOutput(ostream &output) const
 
 JointPriorStatement::JointPriorStatement(const vector<string> joint_parameters_arg,
                                          const PriorDistributions &prior_shape_arg,
-                                         const OptionsList &options_list_arg) :
+                                         OptionsList options_list_arg) :
   joint_parameters(joint_parameters_arg),
   prior_shape(prior_shape_arg),
-  options_list(options_list_arg)
+  options_list(move(options_list_arg))
 {
 }
 
@@ -3852,16 +3853,16 @@ BasicPriorStatement::~BasicPriorStatement()
 {
 }
 
-BasicPriorStatement::BasicPriorStatement(const string &name_arg,
-                                         const string &subsample_name_arg,
+BasicPriorStatement::BasicPriorStatement(string name_arg,
+                                         string subsample_name_arg,
                                          const PriorDistributions &prior_shape_arg,
                                          const expr_t &variance_arg,
-                                         const OptionsList &options_list_arg) :
-  name(name_arg),
-  subsample_name(subsample_name_arg),
+                                         OptionsList options_list_arg) :
+  name(move(name_arg)),
+  subsample_name(move(subsample_name_arg)),
   prior_shape(prior_shape_arg),
   variance(variance_arg),
-  options_list(options_list_arg)
+  options_list(move(options_list_arg))
 {
 }
 
@@ -4143,9 +4144,9 @@ StdPriorStatement::StdPriorStatement(const string &name_arg,
                                      const PriorDistributions &prior_shape_arg,
                                      const expr_t &variance_arg,
                                      const OptionsList &options_list_arg,
-                                     const SymbolTable &symbol_table_arg) :
+                                     SymbolTable symbol_table_arg) :
   BasicPriorStatement(name_arg, subsample_name_arg, prior_shape_arg, variance_arg, options_list_arg),
-  symbol_table(symbol_table_arg)
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -4195,15 +4196,15 @@ StdPriorStatement::writeCOutput(ostream &output, const string &basename)
   output << endl << "     index, shape, mean, mode, stdev, variance, domain));" << endl;
 }
 
-CorrPriorStatement::CorrPriorStatement(const string &name_arg1, const string &name_arg2,
+CorrPriorStatement::CorrPriorStatement(const string &name_arg1, string name_arg2,
                                        const string &subsample_name_arg,
                                        const PriorDistributions &prior_shape_arg,
                                        const expr_t &variance_arg,
                                        const OptionsList &options_list_arg,
-                                       const SymbolTable &symbol_table_arg) :
+                                       SymbolTable symbol_table_arg) :
   BasicPriorStatement(name_arg1, subsample_name_arg, prior_shape_arg, variance_arg, options_list_arg),
-  name1(name_arg2),
-  symbol_table(symbol_table_arg)
+  name1(move(name_arg2)),
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -4276,24 +4277,24 @@ CorrPriorStatement::writeCOutput(ostream &output, const string &basename)
   output << endl <<"     index, index1, shape, mean, mode, stdev, variance, domain));" << endl;
 }
 
-PriorEqualStatement::PriorEqualStatement(const string &to_declaration_type_arg,
-                                         const string &to_name1_arg,
-                                         const string &to_name2_arg,
-                                         const string &to_subsample_name_arg,
-                                         const string &from_declaration_type_arg,
-                                         const string &from_name1_arg,
-                                         const string &from_name2_arg,
-                                         const string &from_subsample_name_arg,
-                                         const SymbolTable &symbol_table_arg) :
-  to_declaration_type(to_declaration_type_arg),
-  to_name1(to_name1_arg),
-  to_name2(to_name2_arg),
-  to_subsample_name(to_subsample_name_arg),
-  from_declaration_type(from_declaration_type_arg),
-  from_name1(from_name1_arg),
-  from_name2(from_name2_arg),
-  from_subsample_name(from_subsample_name_arg),
-  symbol_table(symbol_table_arg)
+PriorEqualStatement::PriorEqualStatement(string to_declaration_type_arg,
+                                         string to_name1_arg,
+                                         string to_name2_arg,
+                                         string to_subsample_name_arg,
+                                         string from_declaration_type_arg,
+                                         string from_name1_arg,
+                                         string from_name2_arg,
+                                         string from_subsample_name_arg,
+                                         SymbolTable symbol_table_arg) :
+  to_declaration_type(move(to_declaration_type_arg)),
+  to_name1(move(to_name1_arg)),
+  to_name2(move(to_name2_arg)),
+  to_subsample_name(move(to_subsample_name_arg)),
+  from_declaration_type(move(from_declaration_type_arg)),
+  from_name1(move(from_name1_arg)),
+  from_name2(move(from_name2_arg)),
+  from_subsample_name(move(from_subsample_name_arg)),
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -4397,12 +4398,12 @@ BasicOptionsStatement::~BasicOptionsStatement()
 {
 }
 
-BasicOptionsStatement::BasicOptionsStatement(const string &name_arg,
-                                             const string &subsample_name_arg,
-                                             const OptionsList &options_list_arg) :
-  name(name_arg),
-  subsample_name(subsample_name_arg),
-  options_list(options_list_arg)
+BasicOptionsStatement::BasicOptionsStatement(string name_arg,
+                                             string subsample_name_arg,
+                                             OptionsList options_list_arg) :
+  name(move(name_arg)),
+  subsample_name(move(subsample_name_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -4520,9 +4521,9 @@ OptionsStatement::writeCOutput(ostream &output, const string &basename)
 StdOptionsStatement::StdOptionsStatement(const string &name_arg,
                                          const string &subsample_name_arg,
                                          const OptionsList &options_list_arg,
-                                         const SymbolTable &symbol_table_arg) :
+                                         SymbolTable symbol_table_arg) :
   BasicOptionsStatement(name_arg, subsample_name_arg, options_list_arg),
-  symbol_table(symbol_table_arg)
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -4567,13 +4568,13 @@ StdOptionsStatement::writeCOutput(ostream &output, const string &basename)
   output << "index, init));" << endl;
 }
 
-CorrOptionsStatement::CorrOptionsStatement(const string &name_arg1, const string &name_arg2,
+CorrOptionsStatement::CorrOptionsStatement(const string &name_arg1, string name_arg2,
                                            const string &subsample_name_arg,
                                            const OptionsList &options_list_arg,
-                                           const SymbolTable &symbol_table_arg) :
+                                           SymbolTable symbol_table_arg) :
   BasicOptionsStatement(name_arg1, subsample_name_arg, options_list_arg),
-  name1(name_arg2),
-  symbol_table(symbol_table_arg)
+  name1(move(name_arg2)),
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -4640,24 +4641,24 @@ CorrOptionsStatement::writeCOutput(ostream &output, const string &basename)
   output << "index, index1, init));" << endl;
 }
 
-OptionsEqualStatement::OptionsEqualStatement(const string &to_declaration_type_arg,
-                                             const string &to_name1_arg,
-                                             const string &to_name2_arg,
-                                             const string &to_subsample_name_arg,
-                                             const string &from_declaration_type_arg,
-                                             const string &from_name1_arg,
-                                             const string &from_name2_arg,
-                                             const string &from_subsample_name_arg,
-                                             const SymbolTable &symbol_table_arg) :
-  to_declaration_type(to_declaration_type_arg),
-  to_name1(to_name1_arg),
-  to_name2(to_name2_arg),
-  to_subsample_name(to_subsample_name_arg),
-  from_declaration_type(from_declaration_type_arg),
-  from_name1(from_name1_arg),
-  from_name2(from_name2_arg),
-  from_subsample_name(from_subsample_name_arg),
-  symbol_table(symbol_table_arg)
+OptionsEqualStatement::OptionsEqualStatement(string to_declaration_type_arg,
+                                             string to_name1_arg,
+                                             string to_name2_arg,
+                                             string to_subsample_name_arg,
+                                             string from_declaration_type_arg,
+                                             string from_name1_arg,
+                                             string from_name2_arg,
+                                             string from_subsample_name_arg,
+                                             SymbolTable symbol_table_arg) :
+  to_declaration_type(move(to_declaration_type_arg)),
+  to_name1(move(to_name1_arg)),
+  to_name2(move(to_name2_arg)),
+  to_subsample_name(move(to_subsample_name_arg)),
+  from_declaration_type(move(from_declaration_type_arg)),
+  from_name1(move(from_name1_arg)),
+  from_name2(move(from_name2_arg)),
+  from_subsample_name(move(from_subsample_name_arg)),
+  symbol_table(move(symbol_table_arg))
 {
 }
 
@@ -4757,9 +4758,9 @@ OptionsEqualStatement::writeOutput(ostream &output, const string &basename, bool
   output << lhs_field << " = " << rhs_field << ";" << endl;
 }
 
-CalibSmootherStatement::CalibSmootherStatement(const SymbolList &symbol_list_arg,
-                                               const OptionsList &options_list_arg)
-  : symbol_list(symbol_list_arg), options_list(options_list_arg)
+CalibSmootherStatement::CalibSmootherStatement(SymbolList symbol_list_arg,
+                                               OptionsList options_list_arg)
+  : symbol_list(move(symbol_list_arg)), options_list(move(options_list_arg))
 {
 }
 
@@ -4799,8 +4800,8 @@ CalibSmootherStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-ExtendedPathStatement::ExtendedPathStatement(const OptionsList &options_list_arg)
-  : options_list(options_list_arg)
+ExtendedPathStatement::ExtendedPathStatement(OptionsList options_list_arg)
+  : options_list(move(options_list_arg))
 {
 }
 
@@ -4862,8 +4863,8 @@ ModelDiagnosticsStatement::writeJsonOutput(ostream &output) const
   output << "{\"statementName\": \"model_diagnostics\"}";
 }
 
-Smoother2histvalStatement::Smoother2histvalStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+Smoother2histvalStatement::Smoother2histvalStatement(OptionsList options_list_arg) :
+  options_list(move(options_list_arg))
 {
 }
 
@@ -4886,10 +4887,10 @@ Smoother2histvalStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-GMMEstimationStatement::GMMEstimationStatement(const SymbolList &symbol_list_arg,
-                                               const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+GMMEstimationStatement::GMMEstimationStatement(SymbolList symbol_list_arg,
+                                               OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -4919,10 +4920,10 @@ GMMEstimationStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-SMMEstimationStatement::SMMEstimationStatement(const SymbolList &symbol_list_arg,
-                                               const OptionsList &options_list_arg) :
-  symbol_list(symbol_list_arg),
-  options_list(options_list_arg)
+SMMEstimationStatement::SMMEstimationStatement(SymbolList symbol_list_arg,
+                                               OptionsList options_list_arg) :
+  symbol_list(move(symbol_list_arg)),
+  options_list(move(options_list_arg))
 {
 }
 
@@ -4952,12 +4953,12 @@ SMMEstimationStatement::writeJsonOutput(ostream &output) const
   output << "}";
 }
 
-GenerateIRFsStatement::GenerateIRFsStatement(const OptionsList &options_list_arg,
-                                             const vector<string> &generate_irf_names_arg,
-                                             const vector<map<string, double> > &generate_irf_elements_arg) :
-  options_list(options_list_arg),
-  generate_irf_names(generate_irf_names_arg),
-  generate_irf_elements(generate_irf_elements_arg)
+GenerateIRFsStatement::GenerateIRFsStatement(OptionsList options_list_arg,
+                                             vector<string> generate_irf_names_arg,
+                                             vector<map<string, double> > generate_irf_elements_arg) :
+  options_list(move(options_list_arg)),
+  generate_irf_names(move(generate_irf_names_arg)),
+  generate_irf_elements(move(generate_irf_elements_arg))
 {
 }
 
diff --git a/src/ComputingTasks.hh b/src/ComputingTasks.hh
index bec95f75..d16ba100 100644
--- a/src/ComputingTasks.hh
+++ b/src/ComputingTasks.hh
@@ -34,7 +34,7 @@ class SteadyStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  SteadyStatement(const OptionsList &options_list_arg);
+  SteadyStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -45,7 +45,7 @@ class CheckStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  CheckStatement(const OptionsList &options_list_arg);
+  CheckStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -56,7 +56,7 @@ class SimulStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  SimulStatement(const OptionsList &options_list_arg);
+  SimulStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -67,7 +67,7 @@ class PerfectForesightSetupStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  PerfectForesightSetupStatement(const OptionsList &options_list_arg);
+  PerfectForesightSetupStatement(OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -77,7 +77,7 @@ class PerfectForesightSolverStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  PerfectForesightSolverStatement(const OptionsList &options_list_arg);
+  PerfectForesightSolverStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -89,7 +89,7 @@ private:
   const bool prior_func;
   const OptionsList options_list;
 public:
-  PriorPosteriorFunctionStatement(const bool prior_func_arg, const OptionsList &options_list_arg);
+  PriorPosteriorFunctionStatement(const bool prior_func_arg, OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -100,7 +100,7 @@ class ModelInfoStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  ModelInfoStatement(const OptionsList &options_list_arg);
+  ModelInfoStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -112,8 +112,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  StochSimulStatement(const SymbolList &symbol_list_arg,
-                      const OptionsList &options_list_arg);
+  StochSimulStatement(SymbolList symbol_list_arg,
+                      OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -134,7 +134,7 @@ public:
                     const string &var_name_arg,
                     const string &discount_arg,
                     const string &growth_arg,
-                    const map<string, int> &undiff_arg,
+                    map<string, int> undiff_arg,
                     const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -155,8 +155,8 @@ private:
   vector<bool> nonstationary, diff;
   int max_lag;
 public:
-  VarModelStatement(const SymbolList &symbol_list_arg,
-                    const OptionsList &options_list_arg,
+  VarModelStatement(SymbolList symbol_list_arg,
+                    OptionsList options_list_arg,
                     const string &name_arg,
                     const SymbolTable &symbol_table_arg);
   void getVarModelInfo(string &var_model_name,
@@ -190,11 +190,11 @@ private:
 public:
   VarRestrictionsStatement(const string &var_model_name_arg,
                            const map<string, vector<string> > &var_map_arg,
-                           const map<int, map<int, SymbolList> > &exclusion_restrictions_arg,
-                           const equation_restrictions_t &equation_restrictions_arg,
-                           const crossequation_restrictions_t &crossequation_restrictions_arg,
-                           const map<pair<int, int>, double> &covariance_number_restriction_arg,
-                           const map<pair<int, int>, pair<int, int> > &covariance_pair_restriction_arg,
+                           map<int, map<int, SymbolList> > exclusion_restrictions_arg,
+                           equation_restrictions_t equation_restrictions_arg,
+                           crossequation_restrictions_t crossequation_restrictions_arg,
+                           map<pair<int, int>, double> covariance_number_restriction_arg,
+                           map<pair<int, int>, pair<int, int> > covariance_pair_restriction_arg,
                            const SymbolTable &symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
@@ -204,7 +204,7 @@ class VarEstimationStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  VarEstimationStatement(const OptionsList &options_list_arg);
+  VarEstimationStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
@@ -215,8 +215,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  ForecastStatement(const SymbolList &symbol_list_arg,
-                    const OptionsList &options_list_arg);
+  ForecastStatement(SymbolList symbol_list_arg,
+                    OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -226,7 +226,7 @@ class RamseyModelStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  RamseyModelStatement(const OptionsList &options_list_arg);
+  RamseyModelStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -246,7 +246,7 @@ private:
   const SymbolTable &symbol_table;
   const constraints_t constraints;
 public:
-  RamseyConstraintsStatement(const SymbolTable &symbol_table_arg, const constraints_t &constraints_arg);
+  RamseyConstraintsStatement(const SymbolTable &symbol_table_arg, constraints_t constraints_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -260,8 +260,8 @@ private:
   const OptionsList options_list;
 public:
   RamseyPolicyStatement(const SymbolTable &symbol_table_arg,
-                        const vector<string> &ramsey_policy_list_arg,
-                        const OptionsList &options_list_arg);
+                        vector<string> ramsey_policy_list_arg,
+                        OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   void checkRamseyPolicyList();
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -274,8 +274,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  DiscretionaryPolicyStatement(const SymbolList &symbol_list_arg,
-                               const OptionsList &options_list_arg);
+  DiscretionaryPolicyStatement(SymbolList symbol_list_arg,
+                               OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -286,7 +286,7 @@ class RplotStatement : public Statement
 private:
   const SymbolList symbol_list;
 public:
-  RplotStatement(const SymbolList &symbol_list_arg);
+  RplotStatement(SymbolList symbol_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -326,8 +326,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  EstimationStatement(const SymbolList &symbol_list_arg,
-                      const OptionsList &options_list_arg);
+  EstimationStatement(SymbolList symbol_list_arg,
+                      OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -338,7 +338,7 @@ class DynareSensitivityStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  DynareSensitivityStatement(const OptionsList &options_list_arg);
+  DynareSensitivityStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -352,7 +352,7 @@ private:
   const trend_elements_t trend_elements;
   const SymbolTable &symbol_table;
 public:
-  ObservationTrendsStatement(const trend_elements_t &trend_elements_arg,
+  ObservationTrendsStatement(trend_elements_t trend_elements_arg,
                              const SymbolTable &symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -364,7 +364,7 @@ private:
   const SymbolList symbol_list;
   const SymbolTable &symbol_table;
 public:
-  OsrParamsStatement(const SymbolList &symbol_list_arg, const SymbolTable &symbol_table_arg);
+  OsrParamsStatement(SymbolList symbol_list_arg, const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -376,8 +376,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  OsrStatement(const SymbolList &symbol_list_arg,
-               const OptionsList &options_list_arg);
+  OsrStatement(SymbolList symbol_list_arg,
+               OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -404,7 +404,7 @@ class OsrParamsBoundsStatement : public Statement
 private:
   const vector<OsrParams> osr_params_list;
 public:
-  OsrParamsBoundsStatement(const vector<OsrParams> &osr_params_list_arg);
+  OsrParamsBoundsStatement(vector<OsrParams> osr_params_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -416,8 +416,8 @@ private:
   const SymbolList symbol_list;
   const string filename;
 public:
-  DynaTypeStatement(const SymbolList &symbol_list_arg,
-                    const string &filename_arg);
+  DynaTypeStatement(SymbolList symbol_list_arg,
+                    string filename_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -428,8 +428,8 @@ private:
   const SymbolList symbol_list;
   const string filename;
 public:
-  DynaSaveStatement(const SymbolList &symbol_list_arg,
-                    const string &filename_arg);
+  DynaSaveStatement(SymbolList symbol_list_arg,
+                    string filename_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -442,8 +442,8 @@ private:
   filename_list_t filename_list;
   OptionsList options_list;
 public:
-  ModelComparisonStatement(const filename_list_t &filename_list_arg,
-                           const OptionsList &options_list_arg);
+  ModelComparisonStatement(filename_list_t filename_list_arg,
+                           OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -481,7 +481,7 @@ private:
   const vector<EstimationParams> estim_params_list;
   const SymbolTable &symbol_table;
 public:
-  EstimatedParamsStatement(const vector<EstimationParams> &estim_params_list_arg,
+  EstimatedParamsStatement(vector<EstimationParams> estim_params_list_arg,
                            const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -495,7 +495,7 @@ private:
   const SymbolTable &symbol_table;
   const bool use_calibration;
 public:
-  EstimatedParamsInitStatement(const vector<EstimationParams> &estim_params_list_arg,
+  EstimatedParamsInitStatement(vector<EstimationParams> estim_params_list_arg,
                                const SymbolTable &symbol_table_arg,
                                const bool use_calibration_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
@@ -509,7 +509,7 @@ private:
   const vector<EstimationParams> estim_params_list;
   const SymbolTable &symbol_table;
 public:
-  EstimatedParamsBoundsStatement(const vector<EstimationParams> &estim_params_list_arg,
+  EstimatedParamsBoundsStatement(vector<EstimationParams> estim_params_list_arg,
                                  const SymbolTable &symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -525,8 +525,8 @@ private:
   const covar_weights_t covar_weights;
   const SymbolTable &symbol_table;
 public:
-  OptimWeightsStatement(const var_weights_t &var_weights_arg,
-                        const covar_weights_t &covar_weights_arg,
+  OptimWeightsStatement(var_weights_t var_weights_arg,
+                        covar_weights_t covar_weights_arg,
                         const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -563,7 +563,7 @@ private:
   const int maxnlags;
   const OptionsList options_list;
 public:
-  BVARDensityStatement(int maxnlags_arg, const OptionsList &options_list_arg);
+  BVARDensityStatement(int maxnlags_arg, OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -575,7 +575,7 @@ private:
   const int nlags;
   const OptionsList options_list;
 public:
-  BVARForecastStatement(int nlags_arg, const OptionsList &options_list_arg);
+  BVARForecastStatement(int nlags_arg, OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -586,7 +586,7 @@ class SBVARStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  SBVARStatement(const OptionsList &options_list_arg);
+  SBVARStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -597,7 +597,7 @@ class MSSBVAREstimationStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  MSSBVAREstimationStatement(const OptionsList &options_list_arg);
+  MSSBVAREstimationStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -608,7 +608,7 @@ class MSSBVARSimulationStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  MSSBVARSimulationStatement(const OptionsList &options_list_arg);
+  MSSBVARSimulationStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -619,7 +619,7 @@ class MSSBVARComputeMDDStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  MSSBVARComputeMDDStatement(const OptionsList &options_list_arg);
+  MSSBVARComputeMDDStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -630,7 +630,7 @@ class MSSBVARComputeProbabilitiesStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  MSSBVARComputeProbabilitiesStatement(const OptionsList &options_list_arg);
+  MSSBVARComputeProbabilitiesStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -642,8 +642,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  MSSBVARIrfStatement(const SymbolList &symbol_list_arg,
-                      const OptionsList &options_list_arg);
+  MSSBVARIrfStatement(SymbolList symbol_list_arg,
+                      OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -654,7 +654,7 @@ class MSSBVARForecastStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  MSSBVARForecastStatement(const OptionsList &options_list_arg);
+  MSSBVARForecastStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -665,7 +665,7 @@ class MSSBVARVarianceDecompositionStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  MSSBVARVarianceDecompositionStatement(const OptionsList &options_list_arg);
+  MSSBVARVarianceDecompositionStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -732,8 +732,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  ShockDecompositionStatement(const SymbolList &symbol_list_arg,
-                              const OptionsList &options_list_arg);
+  ShockDecompositionStatement(SymbolList symbol_list_arg,
+                              OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -744,8 +744,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  RealtimeShockDecompositionStatement(const SymbolList &symbol_list_arg,
-                                      const OptionsList &options_list_arg);
+  RealtimeShockDecompositionStatement(SymbolList symbol_list_arg,
+                                      OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
@@ -755,8 +755,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  PlotShockDecompositionStatement(const SymbolList &symbol_list_arg,
-                                  const OptionsList &options_list_arg);
+  PlotShockDecompositionStatement(SymbolList symbol_list_arg,
+                                  OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
@@ -766,8 +766,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  InitialConditionDecompositionStatement(const SymbolList &symbol_list_arg,
-                                         const OptionsList &options_list_arg);
+  InitialConditionDecompositionStatement(SymbolList symbol_list_arg,
+                                         OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
@@ -776,7 +776,7 @@ class ConditionalForecastStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  ConditionalForecastStatement(const OptionsList &options_list_arg);
+  ConditionalForecastStatement(OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -788,7 +788,7 @@ private:
   const int periods;
   const SymbolList symbol_list;
 public:
-  PlotConditionalForecastStatement(int periods_arg, const SymbolList &symbol_list_arg);
+  PlotConditionalForecastStatement(int periods_arg, SymbolList symbol_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -799,8 +799,8 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  CalibSmootherStatement(const SymbolList &symbol_list_arg,
-                         const OptionsList &options_list_arg);
+  CalibSmootherStatement(SymbolList symbol_list_arg,
+                         OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -811,7 +811,7 @@ class ExtendedPathStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  ExtendedPathStatement(const OptionsList &options_list_arg);
+  ExtendedPathStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -839,7 +839,7 @@ private:
   const SymbolTable &symbol_table;
   int getMaxLag() const;
 public:
-  SvarIdentificationStatement(const svar_identification_restrictions_t &restrictions_arg,
+  SvarIdentificationStatement(svar_identification_restrictions_t restrictions_arg,
                               const bool &upper_cholesky_present_arg,
                               const bool &lower_cholesky_present_arg,
                               const bool &constants_exclusion_present_arg,
@@ -855,7 +855,7 @@ private:
   const OptionsList options_list;
   map <pair<int, int >, double > restriction_map;
 public:
-  MarkovSwitchingStatement(const OptionsList &options_list_arg);
+  MarkovSwitchingStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
@@ -867,7 +867,7 @@ class SvarStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  SvarStatement(const OptionsList &options_list_arg);
+  SvarStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -886,7 +886,7 @@ class SetTimeStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  SetTimeStatement(const OptionsList &options_list_arg);
+  SetTimeStatement(OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -896,7 +896,7 @@ class EstimationDataStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  EstimationDataStatement(const OptionsList &options_list_arg);
+  EstimationDataStatement(OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -913,10 +913,10 @@ private:
   const subsample_declaration_map_t subsample_declaration_map;
   const SymbolTable symbol_table;
 public:
-  SubsamplesStatement(const string &name1_arg,
-                      const string &name2_arg,
+  SubsamplesStatement(string name1_arg,
+                      string name2_arg,
                       const subsample_declaration_map_t subsample_declaration_map_arg,
-                      const SymbolTable &symbol_table_arg);
+                      SymbolTable symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -931,11 +931,11 @@ private:
   const string from_name2;
   const SymbolTable symbol_table;
 public:
-  SubsamplesEqualStatement(const string &to_name1_arg,
-                           const string &to_name2_arg,
-                           const string &from_name1_arg,
-                           const string &from_name2_arg,
-                           const SymbolTable &symbol_table_arg);
+  SubsamplesEqualStatement(string to_name1_arg,
+                           string to_name2_arg,
+                           string from_name1_arg,
+                           string from_name2_arg,
+                           SymbolTable symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -949,7 +949,7 @@ private:
 public:
   JointPriorStatement(const vector<string> joint_parameters_arg,
                       const PriorDistributions &prior_shape_arg,
-                      const OptionsList &options_list_arg);
+                      OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   void writeOutputHelper(ostream &output, const string &field, const string &lhs_field) const;
@@ -967,11 +967,11 @@ protected:
   const PriorDistributions prior_shape;
   const expr_t variance;
   const OptionsList options_list;
-  BasicPriorStatement(const string &name_arg,
-                      const string &subsample_name_arg,
+  BasicPriorStatement(string name_arg,
+                      string subsample_name_arg,
                       const PriorDistributions &prior_shape_arg,
                       const expr_t &variance_arg,
-                      const OptionsList &options_list_arg);
+                      OptionsList options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   void writeCommonOutput(ostream &output, const string &lhs_field) const;
@@ -1013,7 +1013,7 @@ public:
                     const PriorDistributions &prior_shape_arg,
                     const expr_t &variance_arg,
                     const OptionsList &options_list_arg,
-                    const SymbolTable &symbol_table_arg);
+                    SymbolTable symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
   virtual void writeJsonOutput(ostream &output) const;
@@ -1026,12 +1026,12 @@ private:
   const SymbolTable symbol_table;
 public:
   CorrPriorStatement(const string &name_arg1,
-                     const string &name_arg2,
+                     string name_arg2,
                      const string &subsample_name_arg,
                      const PriorDistributions &prior_shape_arg,
                      const expr_t &variance_arg,
                      const OptionsList &options_list_arg,
-                     const SymbolTable &symbol_table_arg);
+                     SymbolTable symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
@@ -1051,15 +1051,15 @@ private:
   const string from_subsample_name;
   const SymbolTable symbol_table;
 public:
-  PriorEqualStatement(const string &to_declaration_type_arg,
-                      const string &to_name1_arg,
-                      const string &to_name2_arg,
-                      const string &to_subsample_name_arg,
-                      const string &from_declaration_type_arg,
-                      const string &from_name1_arg,
-                      const string &from_name2_arg,
-                      const string &from_subsample_name_arg,
-                      const SymbolTable &symbol_table_arg);
+  PriorEqualStatement(string to_declaration_type_arg,
+                      string to_name1_arg,
+                      string to_name2_arg,
+                      string to_subsample_name_arg,
+                      string from_declaration_type_arg,
+                      string from_name1_arg,
+                      string from_name2_arg,
+                      string from_subsample_name_arg,
+                      SymbolTable symbol_table_arg);
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -1075,9 +1075,9 @@ protected:
   const string name;
   const string subsample_name;
   const OptionsList options_list;
-  BasicOptionsStatement(const string &name_arg,
-                        const string &subsample_name_arg,
-                        const OptionsList &options_list_arg);
+  BasicOptionsStatement(string name_arg,
+                        string subsample_name_arg,
+                        OptionsList options_list_arg);
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   void writeOptionsOutput(ostream &output, string &lhs_field, const string &name2) const;
@@ -1107,7 +1107,7 @@ public:
   StdOptionsStatement(const string &name_arg,
                       const string &subsample_name_arg,
                       const OptionsList &options_list_arg,
-                      const SymbolTable &symbol_table_arg);
+                      SymbolTable symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
   virtual void writeJsonOutput(ostream &output) const;
@@ -1119,10 +1119,10 @@ private:
   const string name1;
   const SymbolTable symbol_table;
 public:
-  CorrOptionsStatement(const string &name_arg1, const string &name_arg2,
+  CorrOptionsStatement(const string &name_arg1, string name_arg2,
                        const string &subsample_name_arg,
                        const OptionsList &options_list_arg,
-                       const SymbolTable &symbol_table_arg);
+                       SymbolTable symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
@@ -1142,15 +1142,15 @@ private:
   const string from_subsample_name;
   const SymbolTable symbol_table;
 public:
-  OptionsEqualStatement(const string &to_declaration_type_arg,
-                        const string &to_name1_arg,
-                        const string &to_name2_arg,
-                        const string &to_subsample_name_arg,
-                        const string &from_declaration_type_arg,
-                        const string &from_name1_arg,
-                        const string &from_name2_arg,
-                        const string &from_subsample_name_arg,
-                        const SymbolTable &symbol_table_arg);
+  OptionsEqualStatement(string to_declaration_type_arg,
+                        string to_name1_arg,
+                        string to_name2_arg,
+                        string to_subsample_name_arg,
+                        string from_declaration_type_arg,
+                        string from_name1_arg,
+                        string from_name2_arg,
+                        string from_subsample_name_arg,
+                        SymbolTable symbol_table_arg);
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -1170,7 +1170,7 @@ class Smoother2histvalStatement : public Statement
 private:
   const OptionsList options_list;
 public:
-  Smoother2histvalStatement(const OptionsList &options_list_arg);
+  Smoother2histvalStatement(OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -1181,7 +1181,7 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  GMMEstimationStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg);
+  GMMEstimationStatement(SymbolList symbol_list_arg, OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -1192,7 +1192,7 @@ private:
   const SymbolList symbol_list;
   const OptionsList options_list;
 public:
-  SMMEstimationStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg);
+  SMMEstimationStatement(SymbolList symbol_list_arg, OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -1205,9 +1205,9 @@ private:
   const vector<string> generate_irf_names;
   const vector<map<string, double> > generate_irf_elements;
 public:
-  GenerateIRFsStatement(const OptionsList &options_list_arg,
-                        const vector<string> &generate_irf_names_arg,
-                        const vector<map<string, double> > &generate_irf_elements_arg);
+  GenerateIRFsStatement(OptionsList options_list_arg,
+                        vector<string> generate_irf_names_arg,
+                        vector<map<string, double> > generate_irf_elements_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
diff --git a/src/ConfigFile.cc b/src/ConfigFile.cc
index 3a80bc43..395a28f1 100644
--- a/src/ConfigFile.cc
+++ b/src/ConfigFile.cc
@@ -20,6 +20,7 @@
 #include <cstdlib>
 #include <iostream>
 #include <fstream>
+#include <utility>
 #include <vector>
 
 #include "ConfigFile.hh"
@@ -54,7 +55,7 @@ SlaveNode::SlaveNode(string &computerName_arg, string port_arg, int minCpuNbr_ar
                      string &password_arg, string &remoteDrive_arg, string &remoteDirectory_arg,
                      string &dynarePath_arg, string &matlabOctavePath_arg, bool singleCompThread_arg, int numberOfThreadsPerJob_arg,
                      string &operatingSystem_arg) :
-  computerName(computerName_arg), port(port_arg), minCpuNbr(minCpuNbr_arg), maxCpuNbr(maxCpuNbr_arg), userName(userName_arg),
+  computerName(computerName_arg), port(move(port_arg)), minCpuNbr(minCpuNbr_arg), maxCpuNbr(maxCpuNbr_arg), userName(userName_arg),
   password(password_arg), remoteDrive(remoteDrive_arg), remoteDirectory(remoteDirectory_arg), dynarePath(dynarePath_arg),
   matlabOctavePath(matlabOctavePath_arg), singleCompThread(singleCompThread_arg), numberOfThreadsPerJob(numberOfThreadsPerJob_arg),
   operatingSystem(operatingSystem_arg)
@@ -74,7 +75,7 @@ SlaveNode::SlaveNode(string &computerName_arg, string port_arg, int minCpuNbr_ar
 }
 
 Cluster::Cluster(member_nodes_t  member_nodes_arg) :
-  member_nodes(member_nodes_arg)
+  member_nodes(move(member_nodes_arg))
 {
   if (member_nodes.empty())
     {
@@ -84,9 +85,9 @@ Cluster::Cluster(member_nodes_t  member_nodes_arg) :
 }
 
 ConfigFile::ConfigFile(bool parallel_arg, bool parallel_test_arg,
-                       bool parallel_slave_open_mode_arg, const string &cluster_name_arg) :
+                       bool parallel_slave_open_mode_arg, string cluster_name_arg) :
   parallel(parallel_arg), parallel_test(parallel_test_arg),
-  parallel_slave_open_mode(parallel_slave_open_mode_arg), cluster_name(cluster_name_arg)
+  parallel_slave_open_mode(parallel_slave_open_mode_arg), cluster_name(move(cluster_name_arg))
 {
 }
 
diff --git a/src/ConfigFile.hh b/src/ConfigFile.hh
index e3d9143e..6a585218 100644
--- a/src/ConfigFile.hh
+++ b/src/ConfigFile.hh
@@ -100,7 +100,7 @@ protected:
 class ConfigFile
 {
 public:
-  ConfigFile(bool parallel_arg, bool parallel_test_arg, bool parallel_slave_open_mode_arg, const string &cluster_name);
+  ConfigFile(bool parallel_arg, bool parallel_test_arg, bool parallel_slave_open_mode_arg, string cluster_name);
   ~ConfigFile();
 
 private:
diff --git a/src/DataTree.hh b/src/DataTree.hh
index 00ddd32e..51b2acf6 100644
--- a/src/DataTree.hh
+++ b/src/DataTree.hh
@@ -28,6 +28,7 @@ using namespace std;
 #include <sstream>
 #include <iomanip>
 #include <cmath>
+#include <utility>
 
 #include "SymbolTable.hh"
 #include "NumericalConstants.hh"
@@ -128,7 +129,7 @@ public:
   {
   public:
     string name;
-    LocalVariableException(const string &name_arg) : name(name_arg)
+    LocalVariableException(string name_arg) : name(move(name_arg))
     {
     }
   };
@@ -275,7 +276,7 @@ public:
   {
   public:
     string name;
-    TrendException(const string &name_arg) : name(name_arg)
+    TrendException(string name_arg) : name(move(name_arg))
     {
     }
   };
diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 4ca81202..4b58901d 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -25,6 +25,7 @@
 #include <cmath>
 
 #include <boost/bind.hpp>
+#include <utility>
 
 #include "ExprNode.hh"
 #include "DataTree.hh"
@@ -1831,15 +1832,15 @@ VariableNode::getEndosAndMaxLags(map<string, int> &model_endos_and_lags) const
       model_endos_and_lags[varname] = lag;
 }
 
-UnaryOpNode::UnaryOpNode(DataTree &datatree_arg, UnaryOpcode op_code_arg, const expr_t arg_arg, int expectation_information_set_arg, int param1_symb_id_arg, int param2_symb_id_arg, const string &adl_param_name_arg, vector<int> adl_lags_arg) :
+UnaryOpNode::UnaryOpNode(DataTree &datatree_arg, UnaryOpcode op_code_arg, const expr_t arg_arg, int expectation_information_set_arg, int param1_symb_id_arg, int param2_symb_id_arg, string adl_param_name_arg, vector<int> adl_lags_arg) :
   ExprNode(datatree_arg),
   arg(arg_arg),
   expectation_information_set(expectation_information_set_arg),
   param1_symb_id(param1_symb_id_arg),
   param2_symb_id(param2_symb_id_arg),
   op_code(op_code_arg),
-  adl_param_name(adl_param_name_arg),
-  adl_lags(adl_lags_arg)
+  adl_param_name(move(adl_param_name_arg)),
+  adl_lags(move(adl_lags_arg))
 {
   // Add myself to the unary op map
   datatree.unary_op_node_map[make_pair(make_pair(arg, op_code),
@@ -5968,10 +5969,10 @@ TrinaryOpNode::substituteStaticAuxiliaryVariable() const
 
 AbstractExternalFunctionNode::AbstractExternalFunctionNode(DataTree &datatree_arg,
                                                            int symb_id_arg,
-                                                           const vector<expr_t> &arguments_arg) :
+                                                           vector<expr_t> arguments_arg) :
   ExprNode(datatree_arg),
   symb_id(symb_id_arg),
-  arguments(arguments_arg)
+  arguments(move(arguments_arg))
 {
 }
 
@@ -7954,9 +7955,9 @@ VarExpectationNode::writeJsonOutput(ostream &output,
 }
 
 PacExpectationNode::PacExpectationNode(DataTree &datatree_arg,
-                                       const string &model_name_arg) :
+                                       string model_name_arg) :
   ExprNode(datatree_arg),
-  model_name(model_name_arg)
+  model_name(move(model_name_arg))
 {
   datatree.pac_expectation_node_map[model_name] = this;
 }
diff --git a/src/ExprNode.hh b/src/ExprNode.hh
index f3d69840..cbb3946e 100644
--- a/src/ExprNode.hh
+++ b/src/ExprNode.hh
@@ -738,7 +738,7 @@ private:
   //! Returns the derivative of this node if darg is the derivative of the argument
   expr_t composeDerivatives(expr_t darg, int deriv_id);
 public:
-  UnaryOpNode(DataTree &datatree_arg, UnaryOpcode op_code_arg, const expr_t arg_arg, int expectation_information_set_arg, int param1_symb_id_arg, int param2_symb_id_arg, const string &adl_param_name_arg, vector<int> adl_lags_arg);
+  UnaryOpNode(DataTree &datatree_arg, UnaryOpcode op_code_arg, const expr_t arg_arg, int expectation_information_set_arg, int param1_symb_id_arg, int param2_symb_id_arg, string adl_param_name_arg, vector<int> adl_lags_arg);
   virtual void prepareForDerivation();
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
@@ -1095,7 +1095,7 @@ protected:
   virtual function<bool (expr_t)> sameTefTermPredicate() const = 0;
 public:
   AbstractExternalFunctionNode(DataTree &datatree_arg, int symb_id_arg,
-                               const vector<expr_t> &arguments_arg);
+                               vector<expr_t> arguments_arg);
   virtual void prepareForDerivation();
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
@@ -1398,7 +1398,7 @@ private:
   set<pair<int, pair<int, int> > > ec_params_and_vars;
   set<pair<int, pair<int, int> > > ar_params_and_vars;
 public:
-  PacExpectationNode(DataTree &datatree_arg, const string &model_name);
+  PacExpectationNode(DataTree &datatree_arg, string model_name);
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
diff --git a/src/NumericalInitialization.cc b/src/NumericalInitialization.cc
index b3b39c98..219af7bc 100644
--- a/src/NumericalInitialization.cc
+++ b/src/NumericalInitialization.cc
@@ -21,6 +21,7 @@
 #include <fstream>
 #include <sstream>
 #include <cstdlib>
+#include <utility>
 
 #include "NumericalInitialization.hh"
 
@@ -94,10 +95,10 @@ InitParamStatement::fillEvalContext(eval_context_t &eval_context) const
     }
 }
 
-InitOrEndValStatement::InitOrEndValStatement(const init_values_t &init_values_arg,
+InitOrEndValStatement::InitOrEndValStatement(init_values_t init_values_arg,
                                              const SymbolTable &symbol_table_arg,
                                              const bool &all_values_required_arg) :
-  init_values(init_values_arg),
+  init_values(move(init_values_arg)),
   symbol_table(symbol_table_arg),
   all_values_required(all_values_required_arg)
 {
@@ -302,11 +303,11 @@ EndValStatement::writeJsonOutput(ostream &output) const
   output << "]}";
 }
 
-HistValStatement::HistValStatement(const hist_values_t &hist_values_arg,
+HistValStatement::HistValStatement(hist_values_t hist_values_arg,
                                    const hist_vals_wrong_lag_t hist_vals_wrong_lag_arg,
                                    const SymbolTable &symbol_table_arg,
                                    const bool &all_values_required_arg) :
-  hist_values(hist_values_arg),
+  hist_values(move(hist_values_arg)),
   hist_vals_wrong_lag(hist_vals_wrong_lag_arg),
   symbol_table(symbol_table_arg),
   all_values_required(all_values_required_arg)
@@ -427,8 +428,8 @@ HistValStatement::writeJsonOutput(ostream &output) const
   output << "]}";
 }
 
-InitvalFileStatement::InitvalFileStatement(const string &filename_arg) :
-  filename(filename_arg)
+InitvalFileStatement::InitvalFileStatement(string filename_arg) :
+  filename(move(filename_arg))
 {
 }
 
@@ -450,8 +451,8 @@ InitvalFileStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-HistvalFileStatement::HistvalFileStatement(const string &filename_arg) :
-  filename(filename_arg)
+HistvalFileStatement::HistvalFileStatement(string filename_arg) :
+  filename(move(filename_arg))
 {
 }
 
@@ -469,9 +470,9 @@ HistvalFileStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-HomotopyStatement::HomotopyStatement(const homotopy_values_t &homotopy_values_arg,
+HomotopyStatement::HomotopyStatement(homotopy_values_t homotopy_values_arg,
                                      const SymbolTable &symbol_table_arg) :
-  homotopy_values(homotopy_values_arg),
+  homotopy_values(move(homotopy_values_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -528,8 +529,8 @@ HomotopyStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-SaveParamsAndSteadyStateStatement::SaveParamsAndSteadyStateStatement(const string &filename_arg) :
-  filename(filename_arg)
+SaveParamsAndSteadyStateStatement::SaveParamsAndSteadyStateStatement(string filename_arg) :
+  filename(move(filename_arg))
 {
 }
 
diff --git a/src/NumericalInitialization.hh b/src/NumericalInitialization.hh
index 16f5acd1..b857276f 100644
--- a/src/NumericalInitialization.hh
+++ b/src/NumericalInitialization.hh
@@ -61,7 +61,7 @@ protected:
   const SymbolTable &symbol_table;
   const bool all_values_required;
 public:
-  InitOrEndValStatement(const init_values_t &init_values_arg,
+  InitOrEndValStatement(init_values_t init_values_arg,
                         const SymbolTable &symbol_table_arg,
                         const bool &all_values_required_arg);
   //! Return set of unused variables by type
@@ -114,7 +114,7 @@ private:
   const SymbolTable &symbol_table;
   const bool all_values_required;
 public:
-  HistValStatement(const hist_values_t &hist_values_arg,
+  HistValStatement(hist_values_t hist_values_arg,
                    const hist_vals_wrong_lag_t hist_vals_wrong_lag_arg,
                    const SymbolTable &symbol_table_arg,
                    const bool &all_values_required_arg);
@@ -129,7 +129,7 @@ class InitvalFileStatement : public Statement
 private:
   const string filename;
 public:
-  InitvalFileStatement(const string &filename_arg);
+  InitvalFileStatement(string filename_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -139,7 +139,7 @@ class HistvalFileStatement : public Statement
 private:
   const string filename;
 public:
-  HistvalFileStatement(const string &filename_arg);
+  HistvalFileStatement(string filename_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -154,7 +154,7 @@ private:
   const homotopy_values_t homotopy_values;
   const SymbolTable &symbol_table;
 public:
-  HomotopyStatement(const homotopy_values_t &homotopy_values_arg,
+  HomotopyStatement(homotopy_values_t homotopy_values_arg,
                     const SymbolTable &symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -165,7 +165,7 @@ class SaveParamsAndSteadyStateStatement : public Statement
 private:
   const string filename;
 public:
-  SaveParamsAndSteadyStateStatement(const string &filename_arg);
+  SaveParamsAndSteadyStateStatement(string filename_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
diff --git a/src/Shocks.cc b/src/Shocks.cc
index 6f144bf6..7b796ce0 100644
--- a/src/Shocks.cc
+++ b/src/Shocks.cc
@@ -20,16 +20,17 @@
 #include <cassert>
 #include <cstdlib>
 #include <iostream>
+#include <utility>
 
 #include "Shocks.hh"
 
 AbstractShocksStatement::AbstractShocksStatement(bool mshocks_arg,
                                                  bool overwrite_arg,
-                                                 const det_shocks_t &det_shocks_arg,
+                                                 det_shocks_t det_shocks_arg,
                                                  const SymbolTable &symbol_table_arg) :
   mshocks(mshocks_arg),
   overwrite(overwrite_arg),
-  det_shocks(det_shocks_arg),
+  det_shocks(move(det_shocks_arg)),
   symbol_table(symbol_table_arg)
 {
 }
@@ -95,16 +96,16 @@ AbstractShocksStatement::writeJsonDetShocks(ostream &output) const
 
 ShocksStatement::ShocksStatement(bool overwrite_arg,
                                  const det_shocks_t &det_shocks_arg,
-                                 const var_and_std_shocks_t &var_shocks_arg,
-                                 const var_and_std_shocks_t &std_shocks_arg,
-                                 const covar_and_corr_shocks_t &covar_shocks_arg,
-                                 const covar_and_corr_shocks_t &corr_shocks_arg,
+                                 var_and_std_shocks_t var_shocks_arg,
+                                 var_and_std_shocks_t std_shocks_arg,
+                                 covar_and_corr_shocks_t covar_shocks_arg,
+                                 covar_and_corr_shocks_t corr_shocks_arg,
                                  const SymbolTable &symbol_table_arg) :
   AbstractShocksStatement(false, overwrite_arg, det_shocks_arg, symbol_table_arg),
-  var_shocks(var_shocks_arg),
-  std_shocks(std_shocks_arg),
-  covar_shocks(covar_shocks_arg),
-  corr_shocks(corr_shocks_arg)
+  var_shocks(move(var_shocks_arg)),
+  std_shocks(move(std_shocks_arg)),
+  covar_shocks(move(covar_shocks_arg)),
+  corr_shocks(move(corr_shocks_arg))
 {
 }
 
@@ -431,9 +432,9 @@ MShocksStatement::writeOutput(ostream &output, const string &basename, bool mini
   writeDetShocks(output);
 }
 
-ConditionalForecastPathsStatement::ConditionalForecastPathsStatement(const AbstractShocksStatement::det_shocks_t &paths_arg,
+ConditionalForecastPathsStatement::ConditionalForecastPathsStatement(AbstractShocksStatement::det_shocks_t paths_arg,
                                                                      const SymbolTable &symbol_table_arg) :
-  paths(paths_arg),
+  paths(move(paths_arg)),
   symbol_table(symbol_table_arg),
   path_length(-1)
 {
@@ -486,9 +487,9 @@ ConditionalForecastPathsStatement::writeOutput(ostream &output, const string &ba
     }
 }
 
-MomentCalibration::MomentCalibration(const constraints_t &constraints_arg,
+MomentCalibration::MomentCalibration(constraints_t constraints_arg,
                                      const SymbolTable &symbol_table_arg)
-  : constraints(constraints_arg), symbol_table(symbol_table_arg)
+  : constraints(move(constraints_arg)), symbol_table(symbol_table_arg)
 {
 }
 
@@ -527,10 +528,10 @@ MomentCalibration::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-IrfCalibration::IrfCalibration(const constraints_t &constraints_arg,
+IrfCalibration::IrfCalibration(constraints_t constraints_arg,
                                const SymbolTable &symbol_table_arg,
-                               const OptionsList &options_list_arg)
-  : constraints(constraints_arg), symbol_table(symbol_table_arg), options_list(options_list_arg)
+                               OptionsList options_list_arg)
+  : constraints(move(constraints_arg)), symbol_table(symbol_table_arg), options_list(move(options_list_arg))
 {
 }
 
@@ -577,8 +578,8 @@ IrfCalibration::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-ShockGroupsStatement::ShockGroupsStatement(const group_t &shock_groups_arg, const string &name_arg)
-  : shock_groups(shock_groups_arg), name(name_arg)
+ShockGroupsStatement::ShockGroupsStatement(group_t shock_groups_arg, string name_arg)
+  : shock_groups(move(shock_groups_arg)), name(move(name_arg))
 {
 }
 
diff --git a/src/Shocks.hh b/src/Shocks.hh
index 618bf34b..62345963 100644
--- a/src/Shocks.hh
+++ b/src/Shocks.hh
@@ -53,7 +53,7 @@ protected:
   void writeJsonDetShocks(ostream &output) const;
 
   AbstractShocksStatement(bool mshocks_arg, bool overwrite_arg,
-                          const det_shocks_t &det_shocks_arg,
+                          det_shocks_t det_shocks_arg,
                           const SymbolTable &symbol_table_arg);
 };
 
@@ -73,10 +73,10 @@ private:
 public:
   ShocksStatement(bool overwrite_arg,
                   const det_shocks_t &det_shocks_arg,
-                  const var_and_std_shocks_t &var_shocks_arg,
-                  const var_and_std_shocks_t &std_shocks_arg,
-                  const covar_and_corr_shocks_t &covar_shocks_arg,
-                  const covar_and_corr_shocks_t &corr_shocks_arg,
+                  var_and_std_shocks_t var_shocks_arg,
+                  var_and_std_shocks_t std_shocks_arg,
+                  covar_and_corr_shocks_t covar_shocks_arg,
+                  covar_and_corr_shocks_t corr_shocks_arg,
                   const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -99,7 +99,7 @@ private:
   const SymbolTable &symbol_table;
   int path_length;
 public:
-  ConditionalForecastPathsStatement(const AbstractShocksStatement::det_shocks_t &paths_arg,
+  ConditionalForecastPathsStatement(AbstractShocksStatement::det_shocks_t paths_arg,
                                     const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
@@ -119,7 +119,7 @@ private:
   constraints_t constraints;
   const SymbolTable &symbol_table;
 public:
-  MomentCalibration(const constraints_t &constraints_arg,
+  MomentCalibration(constraints_t constraints_arg,
                     const SymbolTable &symbol_table_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
@@ -140,9 +140,9 @@ private:
   const SymbolTable &symbol_table;
   const OptionsList options_list;
 public:
-  IrfCalibration(const constraints_t &constraints_arg,
+  IrfCalibration(constraints_t constraints_arg,
                  const SymbolTable &symbol_table_arg,
-                 const OptionsList &options_list_arg);
+                 OptionsList options_list_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -161,7 +161,7 @@ private:
   vector<string> group_names;
   string name;
 public:
-  ShockGroupsStatement(const group_t &shock_groups_arg, const string &name_arg);
+  ShockGroupsStatement(group_t shock_groups_arg, string name_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
diff --git a/src/SigmaeInitialization.cc b/src/SigmaeInitialization.cc
index 63d6a0b5..b1ab3aae 100644
--- a/src/SigmaeInitialization.cc
+++ b/src/SigmaeInitialization.cc
@@ -17,10 +17,12 @@
  * along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <utility>
+
 #include "SigmaeInitialization.hh"
 
-SigmaeStatement::SigmaeStatement(const matrix_t &matrix_arg) throw (MatrixFormException) :
-  matrix(matrix_arg),
+SigmaeStatement::SigmaeStatement(matrix_t matrix_arg) throw (MatrixFormException) :
+  matrix(move(matrix_arg)),
   matrix_form(determineMatrixForm(matrix))
 {
 }
diff --git a/src/SigmaeInitialization.hh b/src/SigmaeInitialization.hh
index 41e24e32..981026ad 100644
--- a/src/SigmaeInitialization.hh
+++ b/src/SigmaeInitialization.hh
@@ -56,7 +56,7 @@ private:
   static matrix_form_t determineMatrixForm(const matrix_t &matrix) throw (MatrixFormException);
 
 public:
-  SigmaeStatement(const matrix_t &matrix_arg) throw (MatrixFormException);
+  SigmaeStatement(matrix_t matrix_arg) throw (MatrixFormException);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
diff --git a/src/Statement.cc b/src/Statement.cc
index 7ad2b905..ea0cbb19 100644
--- a/src/Statement.cc
+++ b/src/Statement.cc
@@ -19,6 +19,7 @@
 
 #include "Statement.hh"
 #include <boost/xpressive/xpressive.hpp>
+#include <utility>
 
 ModFileStructure::ModFileStructure() :
   check_present(false),
@@ -94,8 +95,8 @@ Statement::computingPass()
 {
 }
 
-NativeStatement::NativeStatement(const string &native_statement_arg) :
-  native_statement(native_statement_arg)
+NativeStatement::NativeStatement(string native_statement_arg) :
+  native_statement(move(native_statement_arg))
 {
 }
 
@@ -120,8 +121,8 @@ NativeStatement::writeJsonOutput(ostream &output) const
          << "}";
 }
 
-VerbatimStatement::VerbatimStatement(const string &verbatim_statement_arg) :
-  verbatim_statement(verbatim_statement_arg)
+VerbatimStatement::VerbatimStatement(string verbatim_statement_arg) :
+  verbatim_statement(move(verbatim_statement_arg))
 {
 }
 
diff --git a/src/Statement.hh b/src/Statement.hh
index b08e64c5..f253f6fb 100644
--- a/src/Statement.hh
+++ b/src/Statement.hh
@@ -157,7 +157,7 @@ class NativeStatement : public Statement
 private:
   const string native_statement;
 public:
-  NativeStatement(const string &native_statement_arg);
+  NativeStatement(string native_statement_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
@@ -167,7 +167,7 @@ class VerbatimStatement : public Statement
 private:
   const string verbatim_statement;
 public:
-  VerbatimStatement(const string &verbatim_statement_arg);
+  VerbatimStatement(string verbatim_statement_arg);
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeJsonOutput(ostream &output) const;
 };
diff --git a/src/SymbolTable.hh b/src/SymbolTable.hh
index 83056679..175cfcdc 100644
--- a/src/SymbolTable.hh
+++ b/src/SymbolTable.hh
@@ -24,6 +24,7 @@ using namespace std;
 
 #include <map>
 #include <string>
+#include <utility>
 #include <vector>
 #include <set>
 #include <ostream>
@@ -161,7 +162,7 @@ public:
   public:
     //! Symbol name
     string name;
-    UnknownSymbolNameException(const string &name_arg) : name(name_arg)
+    UnknownSymbolNameException(string name_arg) : name(move(name_arg))
     {
     }
   };
@@ -193,7 +194,7 @@ public:
     string name;
     //! Was the previous declaration done with the same symbol type ?
     bool same_type;
-    AlreadyDeclaredException(const string &name_arg, bool same_type_arg) : name(name_arg), same_type(same_type_arg)
+    AlreadyDeclaredException(string name_arg, bool same_type_arg) : name(move(name_arg)), same_type(same_type_arg)
     {
     }
   };
diff --git a/src/macro/MacroDriver.hh b/src/macro/MacroDriver.hh
index 53b1271d..08e80ae5 100644
--- a/src/macro/MacroDriver.hh
+++ b/src/macro/MacroDriver.hh
@@ -29,6 +29,7 @@
 #include <stack>
 #include <map>
 #include <set>
+#include <utility>
 
 #include "MacroValue.hh"
 #include "MacroBison.hh"
@@ -61,10 +62,10 @@ private:
     const Macro::parser::location_type for_body_loc;
     ScanContext(istream *input_arg, struct yy_buffer_state *buffer_arg,
                 Macro::parser::location_type &yylloc_arg, bool is_for_context_arg,
-                const string &for_body_arg,
+                string for_body_arg,
                 Macro::parser::location_type &for_body_loc_arg) :
       input(input_arg), buffer(buffer_arg), yylloc(yylloc_arg), is_for_context(is_for_context_arg),
-      for_body(for_body_arg), for_body_loc(for_body_loc_arg)
+      for_body(move(for_body_arg)), for_body_loc(for_body_loc_arg)
     {
     }
   };
@@ -169,7 +170,7 @@ public:
   {
   public:
     const string name;
-    UnknownVariable(const string &name_arg) : name(name_arg)
+    UnknownVariable(string name_arg) : name(move(name_arg))
     {
     }
   };
diff --git a/src/macro/MacroValue.cc b/src/macro/MacroValue.cc
index 950d276a..11fadb98 100644
--- a/src/macro/MacroValue.cc
+++ b/src/macro/MacroValue.cc
@@ -17,6 +17,8 @@
  * along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <utility>
+
 #include "MacroDriver.hh"
 
 MacroValue::MacroValue(MacroDriver &driver_arg) : driver(driver_arg)
@@ -341,8 +343,8 @@ IntMV::new_range(MacroDriver &driver, const MacroValue *mv1, const MacroValue *m
   return new ArrayMV<int>(driver, result);
 }
 
-StringMV::StringMV(MacroDriver &driver, const string &value_arg) :
-  MacroValue(driver), value(value_arg)
+StringMV::StringMV(MacroDriver &driver, string value_arg) :
+  MacroValue(driver), value(move(value_arg))
 {
 }
 
diff --git a/src/macro/MacroValue.hh b/src/macro/MacroValue.hh
index ef1e8489..ce5ff3ca 100644
--- a/src/macro/MacroValue.hh
+++ b/src/macro/MacroValue.hh
@@ -21,6 +21,7 @@
 #define _MACRO_VALUE_HH
 
 #include <string>
+#include <utility>
 #include <vector>
 #include <sstream>
 #include <boost/lexical_cast.hpp>
@@ -41,7 +42,7 @@ public:
   {
   public:
     const string message;
-    TypeError(const string &message_arg) : message(message_arg)
+    TypeError(string message_arg) : message(move(message_arg))
     {
     };
   };
@@ -179,7 +180,7 @@ private:
   //! Underlying string value
   const string value;
 public:
-  StringMV(MacroDriver &driver, const string &value_arg);
+  StringMV(MacroDriver &driver, string value_arg);
   virtual
   ~StringMV();
   //! Computes string concatenation
@@ -213,7 +214,7 @@ private:
   //! Underlying vector
   const vector<T> values;
 public:
-  ArrayMV(MacroDriver &driver, const vector<T> &values_arg);
+  ArrayMV(MacroDriver &driver, vector<T> values_arg);
   virtual
   ~ArrayMV();
   //! Computes array concatenation
@@ -239,7 +240,7 @@ public:
 };
 
 template<typename T>
-ArrayMV<T>::ArrayMV(MacroDriver &driver, const vector<T> &values_arg) : MacroValue(driver), values(values_arg)
+ArrayMV<T>::ArrayMV(MacroDriver &driver, vector<T> values_arg) : MacroValue(driver), values(move(values_arg))
 {
 }
 
-- 
GitLab