diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index 11c992cc7929c9ec351db435107a5f0e8248ebc5..c58ce315e22cee1dd6e6296a0208a4a66ced3be7 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -1257,7 +1257,7 @@ AbstractEstimatedParamsStatement::commonCheckPass() const
       if (it.type == 3) // Correlation
         {
           // Use lexical ordering for the pair of symbols
-          auto x = it.name < it.name2 ? make_pair(it.name, it.name2) : make_pair(it.name2, it.name);
+          auto x = it.name < it.name2 ? pair{it.name, it.name2} : pair{it.name2, it.name};
 
           if (already_declared_corr.contains(x))
             {
@@ -3528,10 +3528,10 @@ MarkovSwitchingStatement::checkPass(ModFileStructure &mod_file_struct, WarningCo
       auto it_num_regimes = options_list.num_options.find("ms.number_of_regimes");
       assert(it_num_regimes != options_list.num_options.end());
       auto num_regimes = stoi(it_num_regimes->second);
-      vector<double> col_trans_prob_sum(num_regimes, 0);
-      vector<double> row_trans_prob_sum(num_regimes, 0);
-      vector<bool> all_restrictions_in_row(num_regimes, true);
-      vector<bool> all_restrictions_in_col(num_regimes, true);
+      vector col_trans_prob_sum(num_regimes, 0.0);
+      vector row_trans_prob_sum(num_regimes, 0.0);
+      vector all_restrictions_in_row(num_regimes, true);
+      vector all_restrictions_in_col(num_regimes, true);
       for (int row = 0; row < num_regimes; row++)
         for (int col = 0; col < num_regimes; col++)
           if (restriction_map.contains({ row+1, col+1 }))
diff --git a/src/ConfigFile.cc b/src/ConfigFile.cc
index dfb69ee5d5f920ae3b71e56671b8d4ea01bc9ecd..ff2818cb6585f733c03ce5ab84c2d27d88762e34 100644
--- a/src/ConfigFile.cc
+++ b/src/ConfigFile.cc
@@ -380,8 +380,8 @@ ConfigFile::getConfigFileInfo(const string &config_file)
               operatingSystem = tokenizedLine.back();
             else if (!tokenizedLine.front().compare("Members"))
               {
-                char_separator<char> sep(" ,;", "()", drop_empty_tokens);
-                tokenizer<char_separator<char>> tokens(tokenizedLine.back(), sep);
+                char_separator sep(" ,;", "()", drop_empty_tokens);
+                tokenizer tokens(tokenizedLine.back(), sep);
                 bool begin_weight = false;
                 string node_name;
                 for (const auto &token : tokens)
diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index ec4cb9b5ea872da64cdde3df84db13836ab42caf..c3eb92afea3dbb64c7e63d1eb4e867d946e7e201 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -2564,7 +2564,7 @@ DynamicModel::removeEquations(const vector<pair<string, string>> &listed_eqs_by_
                               bool excluded_vars_change_type)
 {
   /* Convert the const vector to a (mutable) set */
-  set<pair<string, string>> listed_eqs_by_tag2(listed_eqs_by_tag.begin(), listed_eqs_by_tag.end());
+  set listed_eqs_by_tag2(listed_eqs_by_tag.begin(), listed_eqs_by_tag.end());
 
   vector<int> excluded_vars = removeEquationsHelper(listed_eqs_by_tag2, exclude_eqs,
                                                     excluded_vars_change_type,
diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 7ff417469a558f1562fece25255568e50b63c501..1e0ea96e2d30016ddef2f153778707e8884e8fe9 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -356,7 +356,7 @@ ExprNode::fillErrorCorrectionRow(int eqn,
                                            datatree.AddPossiblyNegativeConstant(-constant));
               if (param_id)
                 e = datatree.AddTimes(e, datatree.AddVariable(*param_id));
-              if (auto coor = make_pair(eqn, colidx); A0star.contains(coor))
+              if (pair coor{eqn, colidx}; A0star.contains(coor))
                 A0star[coor] = datatree.AddPlus(e, A0star[coor]);
               else
                 A0star[coor] = e;
diff --git a/src/ModFile.cc b/src/ModFile.cc
index e247c9ac23971a11089f0c0ffb30ecc286796d42..d8130dbd8500ec4b24c0ca39346de7f70d7a7b4c 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -1414,7 +1414,7 @@ ModFile::unique_path()
   string possible_characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   random_device rd;
   mt19937 generator(rd());
-  uniform_int_distribution<int> distribution{0, static_cast<int>(possible_characters.size())-1};
+  uniform_int_distribution distribution{0, static_cast<int>(possible_characters.size())-1};
   do
     {
       constexpr int rand_length = 10;
diff --git a/src/ModelEquationBlock.cc b/src/ModelEquationBlock.cc
index f9dd64c59e68a88fb22d7169445ba3ff9cd23754..2b7d35e98c0ca5e14ed2a82b02beaf8b271f2814 100644
--- a/src/ModelEquationBlock.cc
+++ b/src/ModelEquationBlock.cc
@@ -64,7 +64,7 @@ SteadyStateModel::addDefinition(int symb_id, expr_t expr)
          || symbol_table.getType(symb_id) == SymbolType::parameter);
 
   // Add the variable
-  vector<int> v{symb_id};
+  vector v{symb_id};
   def_table.emplace_back(v, expr);
 }
 
diff --git a/src/ModelTree.cc b/src/ModelTree.cc
index 73f15cb71a59193292307341265accc07ab53ba3..f7cfe01f4ac205ffff16fb7daa0ea9aa8f42a66e 100644
--- a/src/ModelTree.cc
+++ b/src/ModelTree.cc
@@ -257,7 +257,7 @@ ModelTree::computeNonSingularNormalization(const jacob_map_t &contemporaneous_ja
   int n = equations.size();
 
   // Compute the maximum value of each row of the contemporaneous Jacobian matrix
-  vector<double> max_val(n, 0.0);
+  vector max_val(n, 0.0);
   for (const auto &[eq_and_endo, val] : contemporaneous_jacobian)
     max_val[eq_and_endo.first] = max(max_val[eq_and_endo.first], fabs(val));
 
@@ -378,7 +378,7 @@ ModelTree::computePrologueAndEpilogue()
      (resp. column) indices are to be interpreted according to
      “eq_idx_block2orig” (resp. “endo_idx_block2orig”). Stored in row-major
      order. */
-  vector<bool> IM(n*n, false);
+  vector IM(n*n, false);
   for (int i = 0; i < n; i++)
     {
       set<pair<int, int>> endos_and_lags;
@@ -507,7 +507,7 @@ ModelTree::equationTypeDetermination(const map<tuple<int, int, int>, expr_t> &fi
 void
 ModelTree::computeDynamicStructureOfBlock(int blk)
 {
-  vector<pair<int, int>> max_endo_lag_lead(blocks[blk].size, { 0, 0 });
+  vector max_endo_lag_lead(blocks[blk].size, pair{0, 0});
   blocks[blk].max_endo_lag = blocks[blk].max_endo_lead = 0;
   blocks[blk].max_other_endo_lag = blocks[blk].max_other_endo_lead = 0;
   blocks[blk].max_exo_lag = blocks[blk].max_exo_lead = 0;
@@ -716,8 +716,7 @@ ModelTree::computeBlockDecomposition(int prologue, int epilogue)
       auto recursive_vertices = subG.reorderRecursiveVariables(feed_back_vertices);
       auto v_index1 = get(boost::vertex_index1, subG);
 
-      const vector<pair<int, int>> dynamic_order{ make_pair(0, 0), make_pair(1, 0),
-                                                  make_pair(1, 1), make_pair(0, 1) };
+      const vector dynamic_order{pair{0, 0}, pair{1, 0}, pair{1, 1}, pair{0, 1}};
 
       // First the recursive equations conditional on feedback variables
       for (auto max_lag_lead : dynamic_order)
diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc
index 4d9bdac7c268018ab46f5b817938e7be9f3166bd..72909abeaecf6c4d4c3fa7201a153d3a91ed52e5 100644
--- a/src/ParsingDriver.cc
+++ b/src/ParsingDriver.cc
@@ -584,7 +584,7 @@ ParsingDriver::hist_val(const string &name, const string &lag, expr_t rhs)
   if (ilag > 0)
     error("histval: the lag on " + name + " should be less than or equal to 0");
 
-  pair<int, int> key(symb_id, ilag);
+  pair key{symb_id, ilag};
 
   if (hist_values.contains(key))
     error("hist_val: (" + name + ", " + lag + ") declared twice");
@@ -1075,7 +1075,7 @@ ParsingDriver::add_covar_shock(const string &var1, const string &var2, expr_t va
   int symb_id1 = mod_file->symbol_table.getID(var1);
   int symb_id2 = mod_file->symbol_table.getID(var2);
 
-  pair<int, int> key(symb_id1, symb_id2), key_inv(symb_id2, symb_id1);
+  pair key{symb_id1, symb_id2}, key_inv{symb_id2, symb_id1};
 
   if (covar_shocks.contains(key) || covar_shocks.contains(key_inv)
       || corr_shocks.contains(key) || corr_shocks.contains(key_inv))
@@ -1100,7 +1100,7 @@ ParsingDriver::add_correl_shock(const string &var1, const string &var2, expr_t v
   int symb_id1 = mod_file->symbol_table.getID(var1);
   int symb_id2 = mod_file->symbol_table.getID(var2);
 
-  pair<int, int> key(symb_id1, symb_id2), key_inv(symb_id2, symb_id1);
+  pair key{symb_id1, symb_id2}, key_inv{symb_id2, symb_id1};
 
   if (covar_shocks.contains(key) || covar_shocks.contains(key_inv)
       || corr_shocks.contains(key) || corr_shocks.contains(key_inv))
@@ -2070,7 +2070,7 @@ ParsingDriver::set_optim_weights(const string &name1, const string &name2, expr_
   check_symbol_is_endogenous(name1);
   check_symbol_is_endogenous(name2);
 
-  pair<string, string> covar_key{name1, name2};
+  pair covar_key{name1, name2};
 
   if (covar_weights.contains(covar_key))
     error("optim_weights: pair of variables (" + name1 + ", " + name2