diff --git a/dynare++/parser/cc/dynamic_atoms.hh b/dynare++/parser/cc/dynamic_atoms.hh
index 05341f352480ab52835fe24716f1c28a9dd6724d..27800522d11491758f4afd55fae7407fdd2463fb 100644
--- a/dynare++/parser/cc/dynamic_atoms.hh
+++ b/dynare++/parser/cc/dynamic_atoms.hh
@@ -357,6 +357,7 @@ namespace ogp
     }
     VarOrdering(const VarOrdering &vo, const vector<const char *> &vnames,
                 const DynamicAtoms &a);
+    VarOrdering(const VarOrdering &vo) = delete;
     virtual VarOrdering *clone(const vector<const char *> &vnames,
                                const DynamicAtoms &a) const = 0;
     /** Destructor does nothing here. */
@@ -462,9 +463,6 @@ namespace ogp
      * from the least to the most time preserving the order of atoms
      * within one time. */
     void do_increasing_time();
-  private:
-    /** Declare this copy constructor as private to hide it. */
-    VarOrdering(const VarOrdering &vo);
   };
 
 };
diff --git a/dynare++/parser/cc/formula_parser.hh b/dynare++/parser/cc/formula_parser.hh
index e34f979803eba5ee53f6720f45e62004fe2566d3..448473545800ee3dd2f6fe456c2e5d35f3328d5e 100644
--- a/dynare++/parser/cc/formula_parser.hh
+++ b/dynare++/parser/cc/formula_parser.hh
@@ -158,6 +158,7 @@ namespace ogp
       : atoms(a)
     {
     }
+    FormulaParser(const FormulaParser &fp) = delete;
     /** Copy constructor using a different instance of Atoms. */
     FormulaParser(const FormulaParser &fp, Atoms &a);
     virtual
@@ -295,9 +296,6 @@ namespace ogp
     /** Debug print. */
     void print() const;
   private:
-    /** Hide this copy constructor declaration by declaring it as
-     * private. */
-    FormulaParser(const FormulaParser &fp);
     /** Destroy all derivatives. */
     void destroy_derivatives();
   };
diff --git a/dynare++/parser/cc/tree.hh b/dynare++/parser/cc/tree.hh
index d81e29f7a15894a398311e67cca800ff1e1f0e4d..ea2ccd84c7e51891c747fd6597a7f3286a302205 100644
--- a/dynare++/parser/cc/tree.hh
+++ b/dynare++/parser/cc/tree.hh
@@ -403,6 +403,7 @@ namespace ogp
      * will contain only formulas up to the given last index
      * (included). */
     EvalTree(const OperationTree &otree, int last = -1);
+    EvalTree(const EvalTree &) = delete;
     virtual ~EvalTree()
     {
       delete [] values; delete [] flags;
@@ -422,8 +423,6 @@ namespace ogp
     {
       return otree;
     }
-  private:
-    EvalTree(const EvalTree &);
   };
 
   /** This is an interface describing how a given operation is
diff --git a/dynare++/src/forw_subst_builder.hh b/dynare++/src/forw_subst_builder.hh
index 1b4b7b532051ad249b92a9ce392cb898ddc58098..ea5775a7e2645d2425564cede81dc44bcb1aac10 100644
--- a/dynare++/src/forw_subst_builder.hh
+++ b/dynare++/src/forw_subst_builder.hh
@@ -47,6 +47,7 @@ namespace ogdyn
      * function. This will save us many occurrences of other
      * variables involved in the equation. */
     ForwSubstBuilder(DynareModel &m);
+    ForwSubstBuilder(const ForwSubstBuilder &b) = delete;
     /** Copy constructor with a new instance of the model. */
     ForwSubstBuilder(const ForwSubstBuilder &b, DynareModel &m);
     /** Return the auxiliary variable mapping. */
@@ -62,7 +63,6 @@ namespace ogdyn
       return info;
     }
   private:
-    ForwSubstBuilder(const ForwSubstBuilder &b);
     /** This method takes a nonlinear term t, and if it has leads
      * of greater than 1, then it substitutes the term for the new
      * variable (or string of variables). Note that the
diff --git a/dynare++/src/planner_builder.hh b/dynare++/src/planner_builder.hh
index e1e08c6690b7c7a4aecdfcd16038c0332d2a969e..b38e2eb2dac2e7b6c8a16772b215e6d0c7e22f40 100644
--- a/dynare++/src/planner_builder.hh
+++ b/dynare++/src/planner_builder.hh
@@ -234,6 +234,8 @@ namespace ogdyn
     /** Construct a copy of the builder with provided model, which
      * is supposed to be the copy of the model in the builder. */
     PlannerBuilder(const PlannerBuilder &pb, ogdyn::DynareModel &m);
+    /** Avoid copying from only PlannerBuilder. */
+    PlannerBuilder(const PlannerBuilder &pb) = delete;
     /** Return the information. */
     const PlannerInfo &
     get_info() const
@@ -272,8 +274,6 @@ namespace ogdyn
      * aux_map_static. */
     void fill_aux_map(const ogp::NameStorage &ns, const Tsubstmap &aaux_map,
                       const Tsubstmap &astatic_aux_map);
-    /** Avoid copying from only PlannerBuilder. */
-    PlannerBuilder(const PlannerBuilder &pb);
   };
 
   /** This class only calculates for the given initial guess of
diff --git a/dynare++/sylv/cc/SylvMemory.hh b/dynare++/sylv/cc/SylvMemory.hh
index eaac9b613eeff459d6d32b73903b008a855e4db1..6300c5da5a73a850d46ef33219f70119fce4de04 100644
--- a/dynare++/sylv/cc/SylvMemory.hh
+++ b/dynare++/sylv/cc/SylvMemory.hh
@@ -33,10 +33,10 @@ class SylvMemoryPool
   size_t length{0};
   size_t allocated{0};
   bool stack_mode{false};
-  SylvMemoryPool(const SylvMemoryPool &);
-  const SylvMemoryPool &operator=(const SylvMemoryPool &);
 public:
   SylvMemoryPool();
+  SylvMemoryPool(const SylvMemoryPool &) = delete;
+  const SylvMemoryPool &operator=(const SylvMemoryPool &) = delete;
   ~SylvMemoryPool();
   void init(size_t size);
   void *allocate(size_t size);
@@ -47,11 +47,11 @@ public:
 
 class SylvMemoryDriver
 {
-  SylvMemoryDriver(const SylvMemoryDriver &);
-  const SylvMemoryDriver &operator=(const SylvMemoryDriver &);
 public:
   SylvMemoryDriver(int num_d, int m, int n, int order);
   SylvMemoryDriver(const SylvParams &pars, int num_d, int m, int n, int order);
+  SylvMemoryDriver(const SylvMemoryDriver &) = delete;
+  const SylvMemoryDriver &operator=(const SylvMemoryDriver &) = delete;
   static void setStackMode(bool);
   ~SylvMemoryDriver();
 protected:
diff --git a/dynare++/tl/cc/pyramid_prod2.hh b/dynare++/tl/cc/pyramid_prod2.hh
index 2dce7e1c5ead50f6a882770033c1f4f924f8210a..a948fcb8a0c08ef435b632d99f84f2185e53b52b 100644
--- a/dynare++/tl/cc/pyramid_prod2.hh
+++ b/dynare++/tl/cc/pyramid_prod2.hh
@@ -101,6 +101,7 @@ class IrregTensorHeader
   IntSequence end_seq;
 public:
   IrregTensorHeader(const StackProduct<FGSTensor> &sp, const IntSequence &c);
+  IrregTensorHeader(const IrregTensorHeader &) = delete;
   ~IrregTensorHeader();
   int
   dimen() const
@@ -109,8 +110,6 @@ public:
   }
   void increment(IntSequence &v) const;
   int calcMaxOffset() const;
-private:
-  IrregTensorHeader(const IrregTensorHeader &);
 };
 
 /* Here we declare the irregular tensor. There is no special logic