diff --git a/CommandLineArguments.hxx.in b/CommandLineArguments.hxx.in
index 31115e51fb73e6a44ed1920bb58778f05c9f27b9..7db901556407faaf9efce539ee3c5ffc3931eb22 100644
--- a/CommandLineArguments.hxx.in
+++ b/CommandLineArguments.hxx.in
@@ -62,6 +62,9 @@ public:
   CommandLineArguments();
   ~CommandLineArguments();
 
+  CommandLineArguments(const CommandLineArguments&) = delete;
+  CommandLineArguments& operator=(const CommandLineArguments&) = delete;
+
   /**
    * Various argument types.
    */
diff --git a/SystemInformation.hxx.in b/SystemInformation.hxx.in
index 9e1ce6ce2c28711ccfa60bf469af080a5261211d..5e93878fa670c403f9683069160e4ad9dae01afe 100644
--- a/SystemInformation.hxx.in
+++ b/SystemInformation.hxx.in
@@ -56,6 +56,9 @@ public:
   SystemInformation();
   ~SystemInformation();
 
+  SystemInformation(const SystemInformation&) = delete;
+  SystemInformation& operator=(const SystemInformation&) = delete;
+
   const char* GetVendorString();
   const char* GetVendorID();
   std::string GetTypeID();
diff --git a/SystemTools.cxx b/SystemTools.cxx
index cbdfe11759c563905b0481432ceb9322e19feee2..7fca4d602444b53cd400a682bc75c21de5e876bb 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -416,6 +416,9 @@ public:
     {
     }
     ~Free() { free(const_cast<envchar*>(this->Env)); }
+
+    Free(const Free&) = delete;
+    Free& operator=(const Free&) = delete;
   };
 
   const envchar* Release(const envchar* env)
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index 1967860ab405dd5c253920b33df2746d05e50d11..33b579f7200c37897647ba72540a000d992777e4 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -54,6 +54,9 @@ class @KWSYS_NAMESPACE@_EXPORT SystemToolsManager
 public:
   SystemToolsManager();
   ~SystemToolsManager();
+
+  SystemToolsManager(const SystemToolsManager&) = delete;
+  SystemToolsManager& operator=(const SystemToolsManager&) = delete;
 };
 
 // This instance will show up in any translation unit that uses