diff --git a/src/DataTree.hh b/src/DataTree.hh
index d8f136ca4489420bc63c59350645e975e6410960..e4e36f04ba175dffa021dbfd038455c2a1e58f22 100644
--- a/src/DataTree.hh
+++ b/src/DataTree.hh
@@ -133,9 +133,7 @@ public:
   virtual ~DataTree() = default;
 
   DataTree(const DataTree &d);
-  DataTree(DataTree &&) = delete;
   DataTree &operator=(const DataTree &d);
-  DataTree &operator=(DataTree &&) = delete;
 
   //! Some predefined constants
   NumConstNode *Zero, *One, *Two, *Three, *NaN, *Infinity, *Pi;
diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh
index c53cf524d028caf7b2608a9e336f4b2c5f0a39c4..3a5d97f0133cadf3d4911494a6016880a241f0fd 100644
--- a/src/DynamicModel.hh
+++ b/src/DynamicModel.hh
@@ -312,9 +312,7 @@ public:
                VarModelTable &var_model_table_arg);
 
   DynamicModel(const DynamicModel &m);
-  DynamicModel(DynamicModel &&) = delete;
   DynamicModel &operator=(const DynamicModel &m);
-  DynamicModel &operator=(DynamicModel &&) = delete;
 
   //! Compute cross references
   void computeXrefs();
diff --git a/src/ExprNode.hh b/src/ExprNode.hh
index c811d0642204944f4de1df64542344f3cb4fe6dd..0ad7f51a6e257a768d763cb6e9971850d8f57924 100644
--- a/src/ExprNode.hh
+++ b/src/ExprNode.hh
@@ -256,9 +256,7 @@ public:
   virtual ~ExprNode() = default;
 
   ExprNode(const ExprNode &) = delete;
-  ExprNode(ExprNode &&) = delete;
   ExprNode &operator=(const ExprNode &) = delete;
-  ExprNode &operator=(ExprNode &&) = delete;
 
   //! Initializes data member non_null_derivatives
   virtual void prepareForDerivation() = 0;
diff --git a/src/ModelEquationBlock.hh b/src/ModelEquationBlock.hh
index 93febc431a5a8a82776d3d1dc267454b9e0d99c2..05f71d1200a6302de13b241f2146936b4d131090 100644
--- a/src/ModelEquationBlock.hh
+++ b/src/ModelEquationBlock.hh
@@ -42,9 +42,7 @@ public:
                    const StaticModel &static_model_arg);
 
   SteadyStateModel(const SteadyStateModel &m);
-  SteadyStateModel(SteadyStateModel &&) = delete;
   SteadyStateModel &operator=(const SteadyStateModel &m);
-  SteadyStateModel &operator=(SteadyStateModel &&) = delete;
 
   //! Add an expression of the form "var = expr;"
   void addDefinition(int symb_id, expr_t expr);
@@ -79,9 +77,7 @@ public:
            VarModelTable &var_model_table_arg);
 
   Epilogue(const Epilogue &m);
-  Epilogue(Epilogue &&) = delete;
   Epilogue &operator=(const Epilogue &m);
-  Epilogue &operator=(Epilogue &&) = delete;
 
   //! Add an expression of the form "var = expr;"
   void addDefinition(int symb_id, expr_t expr);
diff --git a/src/ModelTree.hh b/src/ModelTree.hh
index 5aeee1105cce24f33509b1007ff22d8bcdc0e2d7..c2684f26406d0f859b45158cfe74e6af137996bf 100644
--- a/src/ModelTree.hh
+++ b/src/ModelTree.hh
@@ -410,9 +410,7 @@ public:
             bool is_dynamic_arg = false);
 
   ModelTree(const ModelTree &m);
-  ModelTree(ModelTree &&) = delete;
   ModelTree &operator=(const ModelTree &m);
-  ModelTree &operator=(ModelTree &&) = delete;
 
   //! Absolute value under which a number is considered to be zero
   double cutoff{1e-15};
diff --git a/src/ParsingDriver.hh b/src/ParsingDriver.hh
index b9a2949eb6d7564d1dd62973877ffdbf9fdb9493..2284720d5354334eb43a9f750256e7c1d6ec9cc9 100644
--- a/src/ParsingDriver.hh
+++ b/src/ParsingDriver.hh
@@ -61,9 +61,7 @@ public:
   DynareFlex(istream *in = nullptr, ostream *out = nullptr);
 
   DynareFlex(const DynareFlex &) = delete;
-  DynareFlex(DynareFlex &&) = delete;
   DynareFlex &operator=(const DynareFlex &) = delete;
-  DynareFlex &operator=(DynareFlex &&) = delete;
 
   //! The main lexing function
   Dynare::parser::token_type lex(Dynare::parser::semantic_type *yylval,
@@ -283,9 +281,7 @@ public:
   };
 
   ParsingDriver(const ParsingDriver &) = delete;
-  ParsingDriver(ParsingDriver &&) = delete;
   ParsingDriver &operator=(const ParsingDriver &) = delete;
-  ParsingDriver &operator=(ParsingDriver &&) = delete;
 
   //! Starts parsing, and constructs the MOD file representation
   unique_ptr<ModFile> parse(istream &in, bool debug);
diff --git a/src/Statement.hh b/src/Statement.hh
index cf680cae61ce406c7a3b3df348b662a7285b5847..16f04fcce8ece6440abc948cd66a47ac75cde662 100644
--- a/src/Statement.hh
+++ b/src/Statement.hh
@@ -166,9 +166,7 @@ public:
   virtual ~Statement() = default;
 
   Statement(const Statement &) = delete;
-  Statement(Statement &&) = delete;
   Statement &operator=(const Statement &) = delete;
-  Statement &operator=(Statement &&) = delete;
 
   //! Do some internal check, and fill the ModFileStructure class
   /*! Don't forget to update ComputingTasks.hh, Shocks.hh and
diff --git a/src/StaticModel.hh b/src/StaticModel.hh
index 29b2b864e7590d679d3feb1c785e0223dee5529b..ab5cafe0096f90c2c60cbadb8be5f486c0e1c2da 100644
--- a/src/StaticModel.hh
+++ b/src/StaticModel.hh
@@ -119,14 +119,7 @@ public:
               ExternalFunctionsTable &external_functions_table_arg);
 
   StaticModel(const StaticModel &m);
-  StaticModel(StaticModel &&) = delete;
   StaticModel &operator=(const StaticModel &m);
-  /* The move assignment operator is not explicitly deleted, otherwise the
-     static_cast from DynamicModel does not work. However it looks like this
-     operator will not be used in the end. See
-     https://en.cppreference.com/w/cpp/language/copy_initialization
-     With C++17, it should be possible to explicitly delete it */
-  //StaticModel & operator=(StaticModel &&) = delete;
 
   //! Creates the static version of a dynamic model
   explicit StaticModel(const DynamicModel &m);
diff --git a/src/macro/Driver.hh b/src/macro/Driver.hh
index 4d600a800a81b9486586e5c7b0db56a24ef6199d..b28d7bb4f9d0b959f5bb31ecebda145809c34439 100644
--- a/src/macro/Driver.hh
+++ b/src/macro/Driver.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2019-2021 Dynare Team
+ * Copyright © 2019-2022 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -48,9 +48,7 @@ namespace macro
   public:
     TokenizerFlex(istream *in) : TokenizerFlexLexer{in} { }
     TokenizerFlex(const TokenizerFlex &) = delete;
-    TokenizerFlex(TokenizerFlex &&) = delete;
     TokenizerFlex &operator=(const TokenizerFlex &) = delete;
-    TokenizerFlex &operator=(TokenizerFlex &&) = delete;
 
     //! The main lexing function
     Tokenizer::parser::token_type lex(Tokenizer::parser::semantic_type *yylval,
@@ -68,9 +66,7 @@ namespace macro
   public:
     Driver() = default;
     Driver(const Driver &) = delete;
-    Driver(Driver &&) = delete;
     Driver &operator=(const Driver &) = delete;
-    Driver &operator=(Driver &&) = delete;
 
     //! Exception thrown when value of an unknown variable is requested
     class UnknownVariable