From 498123fb5b8cac619005d635b22bb2ddedb9eedf Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sat, 11 Dec 2021 12:03:48 -0500
Subject: [PATCH] More default constructor and destructors

---
 indra/llcharacter/llcharacter.h               |  2 +-
 indra/llcharacter/lljoint.h                   |  2 +-
 indra/llcharacter/llkeyframemotion.cpp        |  7 ----
 indra/llcharacter/llkeyframemotion.h          |  4 +-
 indra/llcharacter/llmotioncontroller.cpp      | 10 -----
 indra/llcharacter/llmotioncontroller.h        |  2 +-
 indra/llcharacter/llvisualparam.cpp           | 16 --------
 indra/llcharacter/llvisualparam.h             |  2 +-
 indra/llcorehttp/_httpreplyqueue.cpp          |  5 ---
 indra/llcorehttp/_httpreplyqueue.h            |  2 +-
 indra/llcorehttp/httpcommon.h                 |  6 +--
 indra/llfilesystem/lldir.cpp                  |  4 --
 indra/llfilesystem/lldir.h                    |  2 +-
 indra/llfilesystem/lldir_mac.cpp              |  4 --
 indra/llfilesystem/lldir_mac.h                |  2 +-
 indra/llfilesystem/lldirguard.h               |  4 +-
 indra/llfilesystem/lllfsthread.cpp            | 10 -----
 indra/llfilesystem/lllfsthread.h              |  4 +-
 indra/llinventory/llinventorysettings.cpp     |  6 +--
 indra/llkdu/llkdumem.h                        |  8 +---
 indra/llmessage/llbufferstream.cpp            |  4 --
 indra/llmessage/llbufferstream.h              |  2 +-
 indra/llmessage/llchainio.cpp                 |  9 ----
 indra/llmessage/llchainio.h                   |  4 +-
 indra/llmessage/llcipher.h                    |  2 +-
 indra/llmessage/llcoproceduremanager.cpp      | 10 +----
 indra/llmessage/llcoproceduremanager.h        |  2 +-
 indra/llmessage/lldispatcher.cpp              |  8 ----
 indra/llmessage/lldispatcher.h                |  8 ++--
 indra/llmessage/llexperiencecache.cpp         |  8 ----
 indra/llmessage/llexperiencecache.h           |  4 +-
 indra/llmessage/llfiltersd2xmlrpc.cpp         | 41 -------------------
 indra/llmessage/llfiltersd2xmlrpc.h           | 20 ++++-----
 indra/llmessage/llhttpnode.cpp                |  6 ---
 indra/llmessage/llhttpnode.h                  |  4 +-
 indra/llmessage/llhttpsdhandler.cpp           |  4 --
 indra/llmessage/llhttpsdhandler.h             |  2 +-
 indra/llmessage/lliohttpserver.cpp            |  9 +---
 indra/llmessage/llioutil.h                    |  8 ++--
 indra/llmessage/llmessagesenderinterface.h    |  2 +-
 indra/llmessage/llmessagetemplate.h           |  2 +-
 indra/llmessage/llsdmessagereader.cpp         |  6 ---
 indra/llmessage/llsdmessagereader.h           |  2 +-
 indra/llmessage/llservice.cpp                 |  8 ----
 indra/llmessage/llservice.h                   |  4 +-
 indra/llmessage/llservicebuilder.h            |  4 +-
 indra/llmessage/lltransfermanager.cpp         |  5 ---
 indra/llmessage/lltransfermanager.h           |  6 +--
 indra/llmessage/lltransfersourceasset.cpp     |  5 ---
 indra/llmessage/lltransfersourceasset.h       |  4 +-
 indra/llmessage/lltransfersourcefile.h        |  2 +-
 indra/llmessage/lluseroperation.cpp           |  9 ----
 indra/llmessage/lluseroperation.h             |  4 +-
 indra/llmessage/llxfermanager.h               |  2 +-
 indra/llmessage/message.h                     |  2 +-
 indra/llmessage/message_string_table.cpp      |  5 ---
 indra/llmessage/tests/llhttpnode_stub.cpp     |  4 --
 indra/llplugin/llpluginclassmediaowner.h      |  2 +-
 indra/llplugin/llplugininstance.cpp           |  4 --
 indra/llplugin/llplugininstance.h             |  2 +-
 indra/llplugin/llpluginmessage.cpp            | 24 -----------
 indra/llplugin/llpluginmessage.h              |  6 +--
 indra/llplugin/llpluginprocessparent.cpp      |  6 ---
 indra/llplugin/llpluginprocessparent.h        |  2 +-
 indra/llplugin/llpluginsharedmemory.cpp       | 41 +++----------------
 indra/llprimitive/llprimtexturelist.cpp       |  4 --
 indra/llprimitive/llprimtexturelist.h         |  2 +-
 indra/llrender/llcubemap.cpp                  |  4 --
 indra/llrender/llcubemap.h                    |  2 +-
 indra/llrender/llfontbitmapcache.cpp          |  4 --
 indra/llrender/llfontbitmapcache.h            |  2 +-
 indra/llrender/llfontgl.cpp                   |  8 ----
 indra/llrender/llfontgl.h                     |  4 +-
 indra/llrender/llgl.h                         |  4 +-
 indra/llrender/llglslshader.cpp               |  4 --
 indra/llrender/llglslshader.h                 |  2 +-
 indra/llrender/llrender2dutils.h              |  2 +-
 indra/llrender/llshadermgr.cpp                |  9 ----
 indra/llrender/llshadermgr.h                  |  4 +-
 indra/llrender/lltexture.cpp                  |  5 ---
 indra/llrender/lltexture.h                    |  2 +-
 indra/llwindow/llkeyboardheadless.cpp         |  3 --
 indra/llwindow/llkeyboardheadless.h           |  2 +-
 indra/llwindow/llkeyboardmacosx.h             |  2 +-
 indra/llwindow/llkeyboardsdl.h                |  2 +-
 indra/llwindow/llmousehandler.h               |  4 +-
 indra/llwindow/llpreeditor.h                  |  2 +-
 indra/llwindow/llwindow.cpp                   |  4 --
 indra/llwindow/llwindow.h                     |  6 +--
 indra/llwindow/llwindowcallbacks.h            |  2 +-
 indra/llwindow/llwindowheadless.cpp           |  5 ---
 indra/llwindow/llwindowheadless.h             |  6 +--
 indra/llwindow/llwindowmacosx.cpp             |  4 --
 indra/llwindow/llwindowmacosx.h               |  2 +-
 .../newview/tests/llviewershadermgr_stub.cpp  |  3 --
 95 files changed, 101 insertions(+), 428 deletions(-)

diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h
index 4b827efd4f3..1471dfb0306 100644
--- a/indra/llcharacter/llcharacter.h
+++ b/indra/llcharacter/llcharacter.h
@@ -47,7 +47,7 @@ class LLPolyMesh;
 class LLPauseRequestHandle : public LLThreadSafeRefCount
 {
 public:
-	LLPauseRequestHandle() {};
+	LLPauseRequestHandle() = default;
 };
 
 typedef LLPointer<LLPauseRequestHandle> LLAnimPauseRequest;
diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h
index 5497b13cfcc..6de398ac7d1 100644
--- a/indra/llcharacter/lljoint.h
+++ b/indra/llcharacter/lljoint.h
@@ -62,7 +62,7 @@ const F32 LL_JOINT_TRESHOLD_POS_OFFSET = 0.0001f; //0.1 mm
 class LLVector3OverrideMap
 {
 public:
-	LLVector3OverrideMap() {}
+	LLVector3OverrideMap() = default;
 	bool findActiveOverride(LLUUID& mesh_id, LLVector3& pos) const;
 	void showJointVector3Overrides(std::ostringstream& os) const;
 	U32 count() const;
diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp
index d34b650df54..edb0c1a23f0 100644
--- a/indra/llcharacter/llkeyframemotion.cpp
+++ b/indra/llcharacter/llkeyframemotion.cpp
@@ -2236,12 +2236,5 @@ LLKeyframeMotion::JointConstraint::JointConstraint(JointConstraintSharedData* sh
 	}
 }
 
-//-----------------------------------------------------------------------------
-// ~JointConstraint()
-//-----------------------------------------------------------------------------
-LLKeyframeMotion::JointConstraint::~JointConstraint()
-{
-}
-
 // End
 
diff --git a/indra/llcharacter/llkeyframemotion.h b/indra/llcharacter/llkeyframemotion.h
index 37ea1cb4f51..8b0e0b782e1 100644
--- a/indra/llcharacter/llkeyframemotion.h
+++ b/indra/llcharacter/llkeyframemotion.h
@@ -252,7 +252,7 @@ class LLKeyframeMotion :
 	{
 	public:
 		JointConstraint(JointConstraintSharedData* shared_data);
-		~JointConstraint();
+		~JointConstraint() = default;
 
 		JointConstraintSharedData*	mSharedData;
 		F32							mWeight;
@@ -430,7 +430,7 @@ class LLKeyframeDataCache
 {
 public:
 	// *FIX: implement this as an actual singleton member of LLKeyframeMotion
-	LLKeyframeDataCache(){};
+	LLKeyframeDataCache() = default;
 	~LLKeyframeDataCache();
 
 	typedef absl::flat_hash_map<LLUUID, class LLKeyframeMotion::JointMotionList*> keyframe_data_map_t; 
diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp
index 4af69471379..853f53cc9db 100644
--- a/indra/llcharacter/llmotioncontroller.cpp
+++ b/indra/llcharacter/llmotioncontroller.cpp
@@ -53,16 +53,6 @@ LLMotionRegistry LLMotionController::sRegistry;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
-//-----------------------------------------------------------------------------
-// LLMotionRegistry()
-// Class Constructor
-//-----------------------------------------------------------------------------
-LLMotionRegistry::LLMotionRegistry()
-{
-	
-}
-
-
 //-----------------------------------------------------------------------------
 // ~LLMotionRegistry()
 // Class Destructor
diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h
index b3eb4e147ea..9ecfe28a85f 100644
--- a/indra/llcharacter/llmotioncontroller.h
+++ b/indra/llcharacter/llmotioncontroller.h
@@ -58,7 +58,7 @@ class LLMotionRegistry
 {
 public:
 	// Constructor
-	LLMotionRegistry();
+	LLMotionRegistry() = default;
 
 	// Destructor
 	~LLMotionRegistry();
diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
index 2235496ac5f..34f0cf7bc12 100644
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -172,22 +172,6 @@ LLVisualParam::LLVisualParam()
 {
 }
 
-//-----------------------------------------------------------------------------
-// LLVisualParam()
-//-----------------------------------------------------------------------------
-LLVisualParam::LLVisualParam(const LLVisualParam& pOther)
-	: mCurWeight(pOther.mCurWeight),
-	mLastWeight(pOther.mLastWeight),
-	mNext(pOther.mNext),
-	mTargetWeight(pOther.mTargetWeight),
-	mIsAnimating(pOther.mIsAnimating),
-	mIsDummy(pOther.mIsDummy),
-	mID(pOther.mID),
-	mInfo(pOther.mInfo),
-	mParamLocation(pOther.mParamLocation)
-{
-}
-
 //-----------------------------------------------------------------------------
 // ~LLVisualParam()
 //-----------------------------------------------------------------------------
diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h
index 66654b36042..27c8ba2e6d9 100644
--- a/indra/llcharacter/llvisualparam.h
+++ b/indra/llcharacter/llvisualparam.h
@@ -169,7 +169,7 @@ class LLVisualParam
 	EParamLocation			getParamLocation() const { return mParamLocation; }
 
 protected:
-	LLVisualParam(const LLVisualParam& pOther);
+	LLVisualParam(const LLVisualParam& pOther) = default;
 
 	F32					mCurWeight;			// current weight
 	F32					mLastWeight;		// last weight
diff --git a/indra/llcorehttp/_httpreplyqueue.cpp b/indra/llcorehttp/_httpreplyqueue.cpp
index 229bfdbe07e..5f8811a83ee 100644
--- a/indra/llcorehttp/_httpreplyqueue.cpp
+++ b/indra/llcorehttp/_httpreplyqueue.cpp
@@ -38,11 +38,6 @@ namespace LLCore
 {
 
 
-HttpReplyQueue::HttpReplyQueue()
-{
-}
-
-
 HttpReplyQueue::~HttpReplyQueue()
 {
     mQueue.clear();
diff --git a/indra/llcorehttp/_httpreplyqueue.h b/indra/llcorehttp/_httpreplyqueue.h
index 33e205c1c96..50069b0c319 100644
--- a/indra/llcorehttp/_httpreplyqueue.h
+++ b/indra/llcorehttp/_httpreplyqueue.h
@@ -66,7 +66,7 @@ class HttpReplyQueue : private boost::noncopyable
     typedef boost::shared_ptr<HttpOperation>    opPtr_t;
     typedef boost::shared_ptr<HttpReplyQueue>   ptr_t;
 
-	HttpReplyQueue();
+	HttpReplyQueue() = default;
     virtual ~HttpReplyQueue();		
 
 public:
diff --git a/indra/llcorehttp/httpcommon.h b/indra/llcorehttp/httpcommon.h
index 083e085bb3a..0a07215a2fd 100644
--- a/indra/llcorehttp/httpcommon.h
+++ b/indra/llcorehttp/httpcommon.h
@@ -337,11 +337,7 @@ struct HttpStatus
 
 	~HttpStatus() = default;
 
-	HttpStatus & operator=(const HttpStatus & rhs)
-	{
-        mDetails = rhs.mDetails;
-		return *this;
-	}
+	HttpStatus & operator=(const HttpStatus & rhs) = default;
 
     HttpStatus & clone(const HttpStatus &rhs)
     {
diff --git a/indra/llfilesystem/lldir.cpp b/indra/llfilesystem/lldir.cpp
index 54e66855add..d26eb115421 100644
--- a/indra/llfilesystem/lldir.cpp
+++ b/indra/llfilesystem/lldir.cpp
@@ -93,10 +93,6 @@ LLDir::LLDir()
 {
 }
 
-LLDir::~LLDir()
-{
-}
-
 std::vector<std::string> LLDir::getFilesInDir(const std::string &dirname)
 {
     //Returns a vector of fullpath filenames.
diff --git a/indra/llfilesystem/lldir.h b/indra/llfilesystem/lldir.h
index 67d5bbbecb7..99e6ffb8baf 100644
--- a/indra/llfilesystem/lldir.h
+++ b/indra/llfilesystem/lldir.h
@@ -57,7 +57,7 @@ class LLDir
 {
  public:
 	LLDir();
-	virtual ~LLDir();
+	virtual ~LLDir() = default;
 
 	// app_name - Usually SecondLife, used for creating settings directories
 	// in OS-specific location, such as C:\Documents and Settings
diff --git a/indra/llfilesystem/lldir_mac.cpp b/indra/llfilesystem/lldir_mac.cpp
index 07a1927550c..a706b800aa1 100644
--- a/indra/llfilesystem/lldir_mac.cpp
+++ b/indra/llfilesystem/lldir_mac.cpp
@@ -153,10 +153,6 @@ LLDir_Mac::LLDir_Mac()
 	}
 }
 
-LLDir_Mac::~LLDir_Mac()
-{
-}
-
 // Implementation
 
 
diff --git a/indra/llfilesystem/lldir_mac.h b/indra/llfilesystem/lldir_mac.h
index 8806a9c2822..11fc8f5df9c 100644
--- a/indra/llfilesystem/lldir_mac.h
+++ b/indra/llfilesystem/lldir_mac.h
@@ -39,7 +39,7 @@ class LLDir_Mac final : public LLDir
 {
 public:
 	LLDir_Mac();
-	virtual ~LLDir_Mac();
+	virtual ~LLDir_Mac() = default;
 
 	/*virtual*/ void initAppDirs(const std::string &app_name,
 		const std::string& app_read_only_data_dir);
diff --git a/indra/llfilesystem/lldirguard.h b/indra/llfilesystem/lldirguard.h
index 37b9e9b83e1..22745827fba 100644
--- a/indra/llfilesystem/lldirguard.h
+++ b/indra/llfilesystem/lldirguard.h
@@ -63,8 +63,8 @@ class LLDirectoryGuard
 class LLDirectoryGuard
 {
 public:
-	LLDirectoryGuard() {}
-	~LLDirectoryGuard() {}
+	LLDirectoryGuard() = default;
+	~LLDirectoryGuard() = default;
 };
 #endif 
 
diff --git a/indra/llfilesystem/lllfsthread.cpp b/indra/llfilesystem/lllfsthread.cpp
index b25de41d6c8..4a53f4940f8 100644
--- a/indra/llfilesystem/lllfsthread.cpp
+++ b/indra/llfilesystem/lllfsthread.cpp
@@ -150,10 +150,6 @@ LLLFSThread::Request::Request(LLLFSThread* thread,
 	}
 }
 
-LLLFSThread::Request::~Request()
-{
-}
-
 // virtual, called from own thread
 void LLLFSThread::Request::finishRequest(bool completed)
 {
@@ -237,9 +233,3 @@ bool LLLFSThread::Request::processRequest()
 }
 
 //============================================================================
-
-LLLFSThread::Responder::~Responder()
-{
-}
-
-//============================================================================
diff --git a/indra/llfilesystem/lllfsthread.h b/indra/llfilesystem/lllfsthread.h
index 51abf7c321f..ea20c993497 100644
--- a/indra/llfilesystem/lllfsthread.h
+++ b/indra/llfilesystem/lllfsthread.h
@@ -56,7 +56,7 @@ class LLLFSThread final : public LLQueuedThread
 	class Responder : public LLThreadSafeRefCount
 	{
 	protected:
-		~Responder();
+		~Responder() = default;
 	public:
 		virtual void completed(S32 bytes) = 0;
 	};
@@ -64,7 +64,7 @@ class LLLFSThread final : public LLQueuedThread
 	class Request final : public QueuedRequest
 	{
 	protected:
-		virtual ~Request(); // use deleteRequest()
+		virtual ~Request() = default; // use deleteRequest()
 		
 	public:
 		Request(LLLFSThread* thread,
diff --git a/indra/llinventory/llinventorysettings.cpp b/indra/llinventory/llinventorysettings.cpp
index 6720ce7f9d7..12ffac85d87 100644
--- a/indra/llinventory/llinventorysettings.cpp
+++ b/indra/llinventory/llinventorysettings.cpp
@@ -60,15 +60,11 @@ struct SettingsEntry final : public LLDictionaryEntry
 class LLSettingsDictionary final : public LLSingleton<LLSettingsDictionary>,
     public LLDictionary<LLSettingsType::type_e, SettingsEntry>
 {
-    LLSINGLETON(LLSettingsDictionary);
+    LLSINGLETON_EMPTY_CTOR(LLSettingsDictionary);
 
     void initSingleton() override;
 };
 
-LLSettingsDictionary::LLSettingsDictionary() 
-{
-}
-
 void LLSettingsDictionary::initSingleton()
 {
     addEntry(LLSettingsType::ST_SKY,        new SettingsEntry("sky",        "New Sky",      LLInventoryType::ICONNAME_SETTINGS_SKY));
diff --git a/indra/llkdu/llkdumem.h b/indra/llkdu/llkdumem.h
index 19f24834c31..071e0a14509 100644
--- a/indra/llkdu/llkdumem.h
+++ b/indra/llkdu/llkdumem.h
@@ -57,9 +57,7 @@ class LLKDUMemSource: public kdu_core::kdu_compressed_source
 		mCurPos = 0;
 	}
 
-	~LLKDUMemSource()
-	{
-	}
+	~LLKDUMemSource() = default;
 
 	int read(kdu_core::kdu_byte *buf, int num_bytes)
 	{
@@ -97,9 +95,7 @@ class LLKDUMemTarget: public kdu_core::kdu_compressed_target
 		mOutputSize = &output_size;
 	}
 
-	~LLKDUMemTarget()
-	{
-	}
+	~LLKDUMemTarget() = default;
 
 	bool write(const kdu_core::kdu_byte *buf, int num_bytes)
 	{
diff --git a/indra/llmessage/llbufferstream.cpp b/indra/llmessage/llbufferstream.cpp
index 39508c1c52e..f6686cb0922 100644
--- a/indra/llmessage/llbufferstream.cpp
+++ b/indra/llmessage/llbufferstream.cpp
@@ -338,7 +338,3 @@ LLBufferStream::LLBufferStream(
 	mStreamBuf(channels, buffer)
 {
 }
-
-LLBufferStream::~LLBufferStream()
-{
-}
diff --git a/indra/llmessage/llbufferstream.h b/indra/llmessage/llbufferstream.h
index 19749612f3a..ead29a22e9e 100644
--- a/indra/llmessage/llbufferstream.h
+++ b/indra/llmessage/llbufferstream.h
@@ -142,7 +142,7 @@ class LLBufferStream : public std::iostream
 	LLBufferStream(
 		const LLChannelDescriptors& channels,
 		LLBufferArray* buffer);
-	~LLBufferStream();
+	~LLBufferStream() = default;
 
 protected:
 	LLBufferStreamBuf mStreamBuf;
diff --git a/indra/llmessage/llchainio.cpp b/indra/llmessage/llchainio.cpp
index bcda6746a19..7e50b3da0ca 100644
--- a/indra/llmessage/llchainio.cpp
+++ b/indra/llmessage/llchainio.cpp
@@ -57,15 +57,6 @@ bool LLDeferredChain::addToPump(
 /**
  * LLChainIOFactory
  */
-LLChainIOFactory::LLChainIOFactory()
-{
-}
-
-// virtual
-LLChainIOFactory::~LLChainIOFactory()
-{
-}
-
 #if 0
 bool LLChainIOFactory::build(LLIOPipe* in, LLIOPipe* out) const
 {
diff --git a/indra/llmessage/llchainio.h b/indra/llmessage/llchainio.h
index 6e4d6c20138..c7f51dea30e 100644
--- a/indra/llmessage/llchainio.h
+++ b/indra/llmessage/llchainio.h
@@ -72,10 +72,10 @@ class LLChainIOFactory
 {
 public:
 	// Constructor
-	LLChainIOFactory();
+	LLChainIOFactory() = default;
 
 	// Destructor
-	virtual ~LLChainIOFactory();
+	virtual ~LLChainIOFactory() = default;
 
 	/** 
 	 * @brief Build the chian with in as the first and end as the last
diff --git a/indra/llmessage/llcipher.h b/indra/llmessage/llcipher.h
index 76e3a7a5a37..16b13bea748 100644
--- a/indra/llmessage/llcipher.h
+++ b/indra/llmessage/llcipher.h
@@ -36,7 +36,7 @@
 class LLCipher
 {
 public:
-	virtual ~LLCipher() {}
+	virtual ~LLCipher() = default;
 
 	// encrypt src and place result into dst. returns TRUE if
 	// Returns number of bytes written into dst, or 0 on error.
diff --git a/indra/llmessage/llcoproceduremanager.cpp b/indra/llmessage/llcoproceduremanager.cpp
index c609232c6ab..c8f03ff2a70 100644
--- a/indra/llmessage/llcoproceduremanager.cpp
+++ b/indra/llmessage/llcoproceduremanager.cpp
@@ -56,7 +56,7 @@ class LLCoprocedurePool: private boost::noncopyable
     typedef LLCoprocedureManager::CoProcedure_t CoProcedure_t;
 
     LLCoprocedurePool(const std::string &name, size_t size);
-    ~LLCoprocedurePool();
+    ~LLCoprocedurePool() = default;
 
     /// Places the coprocedure on the queue for processing. 
     /// 
@@ -129,10 +129,6 @@ class LLCoprocedurePool: private boost::noncopyable
 };
 
 //=========================================================================
-LLCoprocedureManager::LLCoprocedureManager()
-{
-}
-
 LLCoprocedureManager::~LLCoprocedureManager()
 {
     close();
@@ -350,10 +346,6 @@ LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):
     LL_INFOS("CoProcMgr") << "Created coprocedure pool named \"" << mPoolName << "\" with " << size << " items, queue max " << LLCoprocedureManager::DEFAULT_QUEUE_SIZE << LL_ENDL;
 }
 
-LLCoprocedurePool::~LLCoprocedurePool() 
-{
-}
-
 //-------------------------------------------------------------------------
 LLUUID LLCoprocedurePool::enqueueCoprocedure(const std::string &name, LLCoprocedurePool::CoProcedure_t proc)
 {
diff --git a/indra/llmessage/llcoproceduremanager.h b/indra/llmessage/llcoproceduremanager.h
index 572cf39cb8c..11dc7835b19 100644
--- a/indra/llmessage/llcoproceduremanager.h
+++ b/indra/llmessage/llcoproceduremanager.h
@@ -38,7 +38,7 @@ class LLCoprocedurePool;
 
 class LLCoprocedureManager final : public LLSingleton < LLCoprocedureManager >
 {
-    LLSINGLETON(LLCoprocedureManager);
+    LLSINGLETON_EMPTY_CTOR(LLCoprocedureManager);
     virtual ~LLCoprocedureManager();
 
 public:
diff --git a/indra/llmessage/lldispatcher.cpp b/indra/llmessage/lldispatcher.cpp
index fefac0262cb..a53b3d2512d 100644
--- a/indra/llmessage/lldispatcher.cpp
+++ b/indra/llmessage/lldispatcher.cpp
@@ -38,14 +38,6 @@
 ///----------------------------------------------------------------------------
 
 
-LLDispatcher::LLDispatcher()
-{
-}
-
-LLDispatcher::~LLDispatcher()
-{
-}
-
 bool LLDispatcher::isHandlerPresent(const key_t& name) const
 {
 	if(mHandlers.find(name) != mHandlers.end())
diff --git a/indra/llmessage/lldispatcher.h b/indra/llmessage/lldispatcher.h
index 43c63ac4dff..70ff9238c47 100644
--- a/indra/llmessage/lldispatcher.h
+++ b/indra/llmessage/lldispatcher.h
@@ -48,8 +48,8 @@ class LLDispatchHandler
 public:
 	typedef std::vector<std::string> sparam_t;
 	//typedef std::vector<S32> iparam_t;
-	LLDispatchHandler() {}
-	virtual ~LLDispatchHandler() {}
+	LLDispatchHandler() = default;
+	virtual ~LLDispatchHandler() = default;
 	virtual bool operator()(
 		const LLDispatcher* dispatcher,
 		const std::string& key,
@@ -73,8 +73,8 @@ class LLDispatcher
 	//typedef std::vector<S32> iparam_t;
 
 	// construct a dispatcher.
-	LLDispatcher();
-	virtual ~LLDispatcher();
+	LLDispatcher() = default;
+	virtual ~LLDispatcher() = default;
 
 	// Returns if they keyed handler exists in this dispatcher.
 	bool isHandlerPresent(const key_t& name) const;
diff --git a/indra/llmessage/llexperiencecache.cpp b/indra/llmessage/llexperiencecache.cpp
index b271707c622..aac6d53e751 100644
--- a/indra/llmessage/llexperiencecache.cpp
+++ b/indra/llmessage/llexperiencecache.cpp
@@ -88,14 +88,6 @@ const int LLExperienceCache::SEARCH_PAGE_SIZE     = 30;
 bool LLExperienceCache::sShutdown = false;
 
 //=========================================================================
-LLExperienceCache::LLExperienceCache()
-{
-}
-
-LLExperienceCache::~LLExperienceCache()
-{
-}
-
 void LLExperienceCache::initSingleton()
 {
     mCacheFileName = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "experience_cache.xml");
diff --git a/indra/llmessage/llexperiencecache.h b/indra/llmessage/llexperiencecache.h
index 6487632e0c3..b1fe4348a7e 100644
--- a/indra/llmessage/llexperiencecache.h
+++ b/indra/llmessage/llexperiencecache.h
@@ -43,7 +43,7 @@ class LLUUID;
 
 class LLExperienceCache final : public LLSingleton < LLExperienceCache >
 {
-    LLSINGLETON(LLExperienceCache);
+    LLSINGLETON_EMPTY_CTOR(LLExperienceCache);
 
 public:
     typedef boost::function<std::string(const std::string &)> CapabilityQuery_t;
@@ -104,7 +104,7 @@ class LLExperienceCache final : public LLSingleton < LLExperienceCache >
     static const int PROPERTY_SUSPENDED;	// 1 << 7
 
 private:
-    virtual ~LLExperienceCache();
+    virtual ~LLExperienceCache() = default;
 
     virtual void initSingleton() override;
 
diff --git a/indra/llmessage/llfiltersd2xmlrpc.cpp b/indra/llmessage/llfiltersd2xmlrpc.cpp
index 1460f5251f8..1bbb3e01f63 100644
--- a/indra/llmessage/llfiltersd2xmlrpc.cpp
+++ b/indra/llmessage/llfiltersd2xmlrpc.cpp
@@ -119,14 +119,6 @@ static const S32 DEFAULT_PRECISION = 20;
 /**
  * LLFilterSD2XMLRPC
  */
-LLFilterSD2XMLRPC::LLFilterSD2XMLRPC()
-{
-}
-
-LLFilterSD2XMLRPC::~LLFilterSD2XMLRPC()
-{
-}
-
 std::string xml_escape_string(const std::string& in)
 {
 	std::ostringstream out;
@@ -303,15 +295,6 @@ void LLFilterSD2XMLRPC::streamOut(std::ostream& ostr, const LLSD& sd)
  * LLFilterSD2XMLRPCResponse
  */
 
-LLFilterSD2XMLRPCResponse::LLFilterSD2XMLRPCResponse()
-{
-}
-
-LLFilterSD2XMLRPCResponse::~LLFilterSD2XMLRPCResponse()
-{
-}
-
-
 static LLTrace::BlockTimerStatHandle FTM_PROCESS_SD2XMLRPC_RESPONSE("SD2XMLRPC Response");
 // virtual
 LLIOPipe::EStatus LLFilterSD2XMLRPCResponse::process_impl(
@@ -373,10 +356,6 @@ LLIOPipe::EStatus LLFilterSD2XMLRPCResponse::process_impl(
 /**
  * LLFilterSD2XMLRPCRequest
  */
-LLFilterSD2XMLRPCRequest::LLFilterSD2XMLRPCRequest()
-{
-}
-
 LLFilterSD2XMLRPCRequest::LLFilterSD2XMLRPCRequest(const char* method)
 {
 	if(method)
@@ -385,10 +364,6 @@ LLFilterSD2XMLRPCRequest::LLFilterSD2XMLRPCRequest(const char* method)
 	}
 }
 
-LLFilterSD2XMLRPCRequest::~LLFilterSD2XMLRPCRequest()
-{
-}
-
 static LLTrace::BlockTimerStatHandle FTM_PROCESS_SD2XMLRPC_REQUEST("S22XMLRPC Request");
 
 // virtual
@@ -588,14 +563,6 @@ LLIOPipe::EStatus stream_out(std::ostream& ostr, XMLRPC_VALUE value)
 	return status;
 }
 
-LLFilterXMLRPCResponse2LLSD::LLFilterXMLRPCResponse2LLSD()
-{
-}
-
-LLFilterXMLRPCResponse2LLSD::~LLFilterXMLRPCResponse2LLSD()
-{
-}
-
 static LLTrace::BlockTimerStatHandle FTM_PROCESS_XMLRPC2LLSD_RESPONSE("XMLRPC2LLSD Response");
 
 LLIOPipe::EStatus LLFilterXMLRPCResponse2LLSD::process_impl(
@@ -674,14 +641,6 @@ LLIOPipe::EStatus LLFilterXMLRPCResponse2LLSD::process_impl(
 /**
  * LLFilterXMLRPCRequest2LLSD
  */
-LLFilterXMLRPCRequest2LLSD::LLFilterXMLRPCRequest2LLSD()
-{
-}
-
-LLFilterXMLRPCRequest2LLSD::~LLFilterXMLRPCRequest2LLSD()
-{
-}
-
 static LLTrace::BlockTimerStatHandle FTM_PROCESS_XMLRPC2LLSD_REQUEST("XMLRPC2LLSD Request");
 LLIOPipe::EStatus LLFilterXMLRPCRequest2LLSD::process_impl(
 	const LLChannelDescriptors& channels,
diff --git a/indra/llmessage/llfiltersd2xmlrpc.h b/indra/llmessage/llfiltersd2xmlrpc.h
index 0c9a0dc95bc..d3c1d96db33 100644
--- a/indra/llmessage/llfiltersd2xmlrpc.h
+++ b/indra/llmessage/llfiltersd2xmlrpc.h
@@ -48,8 +48,8 @@
 class LLFilterSD2XMLRPC : public LLIOPipe
 {
 public:
-	LLFilterSD2XMLRPC();
-	virtual ~LLFilterSD2XMLRPC();
+	LLFilterSD2XMLRPC() = default;
+	virtual ~LLFilterSD2XMLRPC() = default;
 
 protected:
 	/** 
@@ -86,10 +86,10 @@ class LLFilterSD2XMLRPCResponse : public LLFilterSD2XMLRPC
 {
 public:
 	// constructor
-	LLFilterSD2XMLRPCResponse();
+	LLFilterSD2XMLRPCResponse() = default;
 
 	// destructor
-	virtual ~LLFilterSD2XMLRPCResponse();
+	virtual ~LLFilterSD2XMLRPCResponse() = default;
 
 	/* @name LLIOPipe virtual implementations
 	 */
@@ -142,13 +142,13 @@ class LLFilterSD2XMLRPCRequest : public LLFilterSD2XMLRPC
 {
 public:
 	// constructor
-	LLFilterSD2XMLRPCRequest();
+	LLFilterSD2XMLRPCRequest() = default;
 
 	// constructor
 	LLFilterSD2XMLRPCRequest(const char* method);
 
 	// destructor
-	virtual ~LLFilterSD2XMLRPCRequest();
+	virtual ~LLFilterSD2XMLRPCRequest() = default;
 
 	/* @name LLIOPipe virtual implementations
 	 */
@@ -189,10 +189,10 @@ class LLFilterXMLRPCResponse2LLSD : public LLIOPipe
 {
 public:
 	// constructor
-	LLFilterXMLRPCResponse2LLSD();
+	LLFilterXMLRPCResponse2LLSD() = default;
 
 	// destructor
-	virtual ~LLFilterXMLRPCResponse2LLSD();
+	virtual ~LLFilterXMLRPCResponse2LLSD() = default;
 
 	/* @name LLIOPipe virtual implementations
 	 */
@@ -232,10 +232,10 @@ class LLFilterXMLRPCRequest2LLSD : public LLIOPipe
 {
 public:
 	// constructor
-	LLFilterXMLRPCRequest2LLSD();
+	LLFilterXMLRPCRequest2LLSD() = default;
 
 	// destructor
-	virtual ~LLFilterXMLRPCRequest2LLSD();
+	virtual ~LLFilterXMLRPCRequest2LLSD() = default;
 
 	/* @name LLIOPipe virtual implementations
 	 */
diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp
index 8b8dfde030d..58a784d62b4 100644
--- a/indra/llmessage/llhttpnode.cpp
+++ b/indra/llmessage/llhttpnode.cpp
@@ -388,10 +388,6 @@ const LLHTTPNode* LLHTTPNode::findNode(const std::string& name) const
 	return impl.findNamedChild(name);
 }
 
-LLHTTPNode::Response::~Response()
-{
-}
-
 void LLHTTPNode::Response::statusUnknownError(S32 code)
 {
 	status(code, "Unknown Error");
@@ -443,8 +439,6 @@ namespace
     }
 }
 
-LLHTTPRegistrar::NodeFactory::~NodeFactory() { }
-
 void LLHTTPRegistrar::registerFactory(
     const std::string& path, NodeFactory& factory)
 {
diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h
index 8c5c8927355..166ee1f1028 100644
--- a/indra/llmessage/llhttpnode.h
+++ b/indra/llmessage/llhttpnode.h
@@ -102,7 +102,7 @@ class LLHTTPNode
 	class Response : public LLRefCount
 	{
 	protected:
-		virtual ~Response();
+		virtual ~Response() = default;
 
 	public:
 		/**
@@ -350,7 +350,7 @@ class LLHTTPRegistrar
 	class NodeFactory
 	{
 	public:
-		virtual ~NodeFactory();
+		virtual ~NodeFactory() = default;
 		virtual LLHTTPNode* build() const = 0;
 	};
 
diff --git a/indra/llmessage/llhttpsdhandler.cpp b/indra/llmessage/llhttpsdhandler.cpp
index 648bc5cfd85..658984bfd61 100644
--- a/indra/llmessage/llhttpsdhandler.cpp
+++ b/indra/llmessage/llhttpsdhandler.cpp
@@ -36,10 +36,6 @@
 #include "llcorehttputil.h"
 
 //========================================================================
-LLHttpSDHandler::LLHttpSDHandler()
-{
-}
-
 void LLHttpSDHandler::onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response)
 {
 	LLCore::HttpStatus status = response->getStatus();
diff --git a/indra/llmessage/llhttpsdhandler.h b/indra/llmessage/llhttpsdhandler.h
index ce40bdfc08f..e8f697e392a 100644
--- a/indra/llmessage/llhttpsdhandler.h
+++ b/indra/llmessage/llhttpsdhandler.h
@@ -44,7 +44,7 @@ class LLHttpSDHandler : public LLCore::HttpHandler //,
 	virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response);
 	
 protected:
-    LLHttpSDHandler();
+    LLHttpSDHandler() = default;
 
 	virtual void onSuccess(LLCore::HttpResponse * response, const LLSD &content) = 0;
 	virtual void onFailure(LLCore::HttpResponse * response, LLCore::HttpStatus status) = 0;
diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index d85d802f8d3..1e1f179399c 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -90,7 +90,7 @@ class LLHTTPPipe : public LLIOPipe
 	public:
 
 		static LLPointer<Response> create(LLHTTPPipe* pipe);
-		virtual ~Response();
+		virtual ~Response() = default;
 
 		// from LLHTTPNode::Response
 		virtual void result(const LLSD&);
@@ -321,11 +321,6 @@ LLPointer<LLHTTPPipe::Response> LLHTTPPipe::Response::create(LLHTTPPipe* pipe)
 	return result;
 }
 
-// virtual
-LLHTTPPipe::Response::~Response()
-{
-}
-
 void LLHTTPPipe::Response::nullPipe()
 {
 	mPipe = NULL;
@@ -429,7 +424,7 @@ class LLHTTPResponseHeader : public LLIOPipe
 {
 public:
 	LLHTTPResponseHeader() : mCode(0) {}
-	virtual ~LLHTTPResponseHeader() {}
+	virtual ~LLHTTPResponseHeader() = default;
 
 protected:
 	/* @name LLIOPipe virtual implementations
diff --git a/indra/llmessage/llioutil.h b/indra/llmessage/llioutil.h
index e8d245f530b..beab086f552 100644
--- a/indra/llmessage/llioutil.h
+++ b/indra/llmessage/llioutil.h
@@ -44,8 +44,8 @@
 class LLIOFlush : public LLIOPipe
 {
 public:
-	LLIOFlush() {}
-	virtual ~LLIOFlush() {}
+	LLIOFlush() = default;
+	virtual ~LLIOFlush() = default;
 
 protected:
 	/* @name LLIOPipe virtual implementations
@@ -74,7 +74,7 @@ class LLIOSleep : public LLIOPipe
 {
 public:
 	LLIOSleep(F64 sleep_seconds) : mSeconds(sleep_seconds) {}
-	virtual ~LLIOSleep() {}
+	virtual ~LLIOSleep() = default;
 
 protected:
 	/* @name LLIOPipe virtual implementations
@@ -106,7 +106,7 @@ class LLIOAddChain : public LLIOPipe
 		mChain(chain),
 		mTimeout(timeout)
 	{}
-	virtual ~LLIOAddChain() {}
+	virtual ~LLIOAddChain() = default;
 
 protected:
 	/* @name LLIOPipe virtual implementations
diff --git a/indra/llmessage/llmessagesenderinterface.h b/indra/llmessage/llmessagesenderinterface.h
index ac0f9f7edb7..fd0ac217d8f 100644
--- a/indra/llmessage/llmessagesenderinterface.h
+++ b/indra/llmessage/llmessagesenderinterface.h
@@ -35,7 +35,7 @@ class LLSD;
 class LLMessageSenderInterface
 {
 public:
-	virtual ~LLMessageSenderInterface() {}
+	virtual ~LLMessageSenderInterface() = default;
 	virtual S32 sendMessage(const LLHost& host, LLStoredMessagePtr message) = 0;
 
 };
diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h
index 2a1a7072c7c..855bb437743 100644
--- a/indra/llmessage/llmessagetemplate.h
+++ b/indra/llmessage/llmessagetemplate.h
@@ -150,7 +150,7 @@ class LLMessageVariable
 		mName = LLMessageStringTable::getInstance()->getString(name); 
 	}
 	
-	~LLMessageVariable() {}
+	~LLMessageVariable() = default;
 
 	friend std::ostream&	 operator<<(std::ostream& s, LLMessageVariable &msg);
 
diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp
index b729ebafa98..17f4f276ee0 100644
--- a/indra/llmessage/llsdmessagereader.cpp
+++ b/indra/llmessage/llsdmessagereader.cpp
@@ -45,12 +45,6 @@ LLSDMessageReader::LLSDMessageReader() :
 {
 }
 
-//virtual 
-LLSDMessageReader::~LLSDMessageReader()
-{
-}
-
-
 LLSD getLLSD(const LLSD& input, const char* block, const char* var, S32 blocknum)
 {
 	// babbage: log error to LL_ERRS() if variable not found to mimic
diff --git a/indra/llmessage/llsdmessagereader.h b/indra/llmessage/llsdmessagereader.h
index 65125468cf0..30b30f1bce5 100644
--- a/indra/llmessage/llsdmessagereader.h
+++ b/indra/llmessage/llsdmessagereader.h
@@ -40,7 +40,7 @@ class LLSDMessageReader final : public LLMessageReader
 public:
 
 	LLSDMessageReader();
-	virtual ~LLSDMessageReader();
+	virtual ~LLSDMessageReader() = default;
 
 	/** All get* methods expect pointers to canonical strings. */
 	virtual void getBinaryData(const char *block, const char *var, 
diff --git a/indra/llmessage/llservice.cpp b/indra/llmessage/llservice.cpp
index ddcc13d9695..ee23fbbf7bc 100644
--- a/indra/llmessage/llservice.cpp
+++ b/indra/llmessage/llservice.cpp
@@ -30,14 +30,6 @@
 
 LLService::creators_t LLService::sCreatorFunctors;
 
-LLService::LLService()
-{
-}
-
-LLService::~LLService()
-{
-}
-
 // static
 bool LLService::registerCreator(const std::string& name, creator_t fn)
 {
diff --git a/indra/llmessage/llservice.h b/indra/llmessage/llservice.h
index 9c09aeb44ca..801ee735bef 100644
--- a/indra/llmessage/llservice.h
+++ b/indra/llmessage/llservice.h
@@ -160,8 +160,8 @@ class LLService : public LLIOPipe
 	// deal with construction and not a public method. How that
 	// construction takes place will be handled by the service
 	// creators.
-	LLService();
-	virtual ~LLService();
+	LLService() = default;
+	virtual ~LLService() = default;
 
 protected:
 	// This frame timer records how long this service has
diff --git a/indra/llmessage/llservicebuilder.h b/indra/llmessage/llservicebuilder.h
index 968995edf27..9d2ff07bded 100644
--- a/indra/llmessage/llservicebuilder.h
+++ b/indra/llmessage/llservicebuilder.h
@@ -55,8 +55,8 @@ class LLServiceBuilder
 {
 	LOG_CLASS(LLServiceBuilder);
 public:
-	LLServiceBuilder(void) {}
-	~LLServiceBuilder(void) {}
+	LLServiceBuilder(void) = default;
+	~LLServiceBuilder(void) = default;
 
 	/** 
 	 * @brief Initialize this object with the service definitions.
diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp
index 1cdb2f79b12..cff1306e2ed 100644
--- a/indra/llmessage/lltransfermanager.cpp
+++ b/indra/llmessage/lltransfermanager.cpp
@@ -169,11 +169,6 @@ LLTransferTargetChannel *LLTransferManager::getTargetChannel(const LLHost &host,
 	return tcp->getTargetChannel(type);
 }
 
-// virtual
-LLTransferSourceParams::~LLTransferSourceParams()
-{ }
-
-
 LLTransferSource *LLTransferManager::findTransferSource(const LLUUID &transfer_id)
 {
 	// This linear traversal could screw us later if we do lots of
diff --git a/indra/llmessage/lltransfermanager.h b/indra/llmessage/lltransfermanager.h
index 6aad153c24c..eb95e87dd30 100644
--- a/indra/llmessage/lltransfermanager.h
+++ b/indra/llmessage/lltransfermanager.h
@@ -260,7 +260,7 @@ class LLTransferSourceParams
 {
 public:
 	LLTransferSourceParams(const LLTransferSourceType type) : mType(type) { }
-	virtual ~LLTransferSourceParams();
+	virtual ~LLTransferSourceParams() = default;
 
 	virtual void packParams(LLDataPacker &dp) const	= 0;
 	virtual BOOL unpackParams(LLDataPacker &dp) = 0;
@@ -438,7 +438,7 @@ class LLTransferSourceParamsInvItem: public LLTransferSourceParams
 {
 public:
 	LLTransferSourceParamsInvItem();
-	virtual ~LLTransferSourceParamsInvItem() {}
+	virtual ~LLTransferSourceParamsInvItem() = default;
 	/*virtual*/ void packParams(LLDataPacker &dp) const;
 	/*virtual*/ BOOL unpackParams(LLDataPacker &dp);
 
@@ -470,7 +470,7 @@ class LLTransferSourceParamsEstate: public LLTransferSourceParams
 {
 public:
 	LLTransferSourceParamsEstate();
-	virtual ~LLTransferSourceParamsEstate() {}
+	virtual ~LLTransferSourceParamsEstate() = default;
 	/*virtual*/ void packParams(LLDataPacker &dp) const;
 	/*virtual*/ BOOL unpackParams(LLDataPacker &dp);
 
diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp
index 340d4e88b03..cfc96793fc9 100644
--- a/indra/llmessage/lltransfersourceasset.cpp
+++ b/indra/llmessage/lltransfersourceasset.cpp
@@ -41,11 +41,6 @@ LLTransferSourceAsset::LLTransferSourceAsset(const LLUUID &request_id, const F32
 {
 }
 
-LLTransferSourceAsset::~LLTransferSourceAsset()
-{
-}
-
-
 void LLTransferSourceAsset::initTransfer()
 {
 	if (gAssetStorage)
diff --git a/indra/llmessage/lltransfersourceasset.h b/indra/llmessage/lltransfersourceasset.h
index f89f9dc81da..7066d2c8d9d 100644
--- a/indra/llmessage/lltransfersourceasset.h
+++ b/indra/llmessage/lltransfersourceasset.h
@@ -34,7 +34,7 @@ class LLTransferSourceParamsAsset : public LLTransferSourceParams
 {
 public:
 	LLTransferSourceParamsAsset();
-	virtual ~LLTransferSourceParamsAsset() {}
+	virtual ~LLTransferSourceParamsAsset() = default;
 	/*virtual*/ void packParams(LLDataPacker &dp) const;
 	/*virtual*/ BOOL unpackParams(LLDataPacker &dp);
 
@@ -52,7 +52,7 @@ class LLTransferSourceAsset : public LLTransferSource
 {
 public:
 	LLTransferSourceAsset(const LLUUID &request_id, const F32 priority);
-	virtual ~LLTransferSourceAsset();
+	virtual ~LLTransferSourceAsset() = default;
 
 	static void responderCallback(const LLUUID& uuid, LLAssetType::EType type,
 								  void *user_data, S32 result, LLExtStat ext_status );
diff --git a/indra/llmessage/lltransfersourcefile.h b/indra/llmessage/lltransfersourcefile.h
index 985042417ef..87b9ddf3526 100644
--- a/indra/llmessage/lltransfersourcefile.h
+++ b/indra/llmessage/lltransfersourcefile.h
@@ -33,7 +33,7 @@ class LLTransferSourceParamsFile : public LLTransferSourceParams
 {
 public:
 	LLTransferSourceParamsFile();
-	virtual ~LLTransferSourceParamsFile() {}
+	virtual ~LLTransferSourceParamsFile() = default;
 	/*virtual*/ void packParams(LLDataPacker &dp) const;
 	/*virtual*/ BOOL unpackParams(LLDataPacker &dp);
 
diff --git a/indra/llmessage/lluseroperation.cpp b/indra/llmessage/lluseroperation.cpp
index c506af19ce8..254e3390e97 100644
--- a/indra/llmessage/lluseroperation.cpp
+++ b/indra/llmessage/lluseroperation.cpp
@@ -63,10 +63,6 @@ LLUserOperation::LLUserOperation() :
 {
 }
 
-LLUserOperation::~LLUserOperation()
-{
-}
-
 void LLUserOperation::SetNoExpireFlag(const BOOL flag)
 {
 	mNoExpire = flag;
@@ -91,11 +87,6 @@ void LLUserOperation::expire()
 /// Class LLUserOperationMgr
 ///----------------------------------------------------------------------------
 
-LLUserOperationMgr::LLUserOperationMgr()
-{
-}
-
-
 LLUserOperationMgr::~LLUserOperationMgr()
 {
 	if (mUserOperationList.size() > 0)
diff --git a/indra/llmessage/lluseroperation.h b/indra/llmessage/lluseroperation.h
index 7db5f0b27f4..bb4dbdba56c 100644
--- a/indra/llmessage/lluseroperation.h
+++ b/indra/llmessage/lluseroperation.h
@@ -38,7 +38,7 @@ class LLUserOperation
 public:
 	LLUserOperation(const LLUUID& agent_id);
 	LLUserOperation(const LLUUID& agent_id, const LLUUID& transaction_id);
-	virtual ~LLUserOperation();
+	virtual ~LLUserOperation() = default;
 
 	const LLUUID& getTransactionID() const { return mTransactionID; }
 	const LLUUID& getAgentID() const { return mAgentID; }
@@ -75,7 +75,7 @@ class LLUserOperation
 class LLUserOperationMgr
 {
 public:
-	LLUserOperationMgr();
+	LLUserOperationMgr() = default;
 	~LLUserOperationMgr();
 
 	void addOperation(LLUserOperation* op);
diff --git a/indra/llmessage/llxfermanager.h b/indra/llmessage/llxfermanager.h
index f49209bed0f..83e191b0073 100644
--- a/indra/llmessage/llxfermanager.h
+++ b/indra/llmessage/llxfermanager.h
@@ -51,7 +51,7 @@ class LLHostStatus
 	S32    mNumPending;
 
 	LLHostStatus() {mNumActive = 0; mNumPending = 0;};
-	virtual ~LLHostStatus(){};
+	virtual ~LLHostStatus() = default;
 };
 
 // Class stores ack information, to be put on list so we can throttle xfer rate.
diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h
index 2add4213a6d..b0a2b606ba0 100644
--- a/indra/llmessage/message.h
+++ b/indra/llmessage/message.h
@@ -68,7 +68,7 @@ const S32 MESSAGE_MAX_PER_FRAME = 400;
 class LLMessageStringTable final : public LLSingleton<LLMessageStringTable>
 {
 	LLSINGLETON(LLMessageStringTable);
-	~LLMessageStringTable();
+	~LLMessageStringTable() = default;
 
 public:
 	char *getString(const char *str);
diff --git a/indra/llmessage/message_string_table.cpp b/indra/llmessage/message_string_table.cpp
index e4f5fb3a38d..d8f281aa69b 100644
--- a/indra/llmessage/message_string_table.cpp
+++ b/indra/llmessage/message_string_table.cpp
@@ -52,11 +52,6 @@ LLMessageStringTable::LLMessageStringTable()
 	}
 }
 
-
-LLMessageStringTable::~LLMessageStringTable()
-{ }
-
-
 char* LLMessageStringTable::getString(const char *str)
 {
 	U32 hash_value = message_hash_my_string(str);
diff --git a/indra/llmessage/tests/llhttpnode_stub.cpp b/indra/llmessage/tests/llhttpnode_stub.cpp
index 479a256bdd7..574b3d87887 100644
--- a/indra/llmessage/tests/llhttpnode_stub.cpp
+++ b/indra/llmessage/tests/llhttpnode_stub.cpp
@@ -66,7 +66,6 @@ LLSD LLHTTPNode::allNodePaths() const { return LLSD(); }
 const LLHTTPNode* LLHTTPNode::rootNode() const { return NULL; }
 const LLHTTPNode* LLHTTPNode::findNode(const std::string& name) const { return NULL; }
 
-LLHTTPNode::Response::~Response(){}
 void LLHTTPNode::Response::notFound(const std::string& message)
 {
 	status(404, message);
@@ -97,9 +96,6 @@ void LLHTTPNode::describe(Description& desc) const { }
 
 const LLChainIOFactory* LLHTTPNode::getProtocolHandler() const { return NULL; }
 
-
-LLHTTPRegistrar::NodeFactory::~NodeFactory() { }
-
 void LLHTTPRegistrar::registerFactory(
     const std::string& path, NodeFactory& factory) {}
 void LLHTTPRegistrar::buildAllServices(LLHTTPNode& root) {}
diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h
index 89f55eaf716..da7defc73e6 100644
--- a/indra/llplugin/llpluginclassmediaowner.h
+++ b/indra/llplugin/llpluginclassmediaowner.h
@@ -83,7 +83,7 @@ class LLPluginClassMediaOwner
 
 	} EMediaStatus;
 
-	virtual ~LLPluginClassMediaOwner() {};
+	virtual ~LLPluginClassMediaOwner() = default;
 	virtual void handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent /*event*/) {};
 };
 
diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp
index 7cde82a20e6..773dcf7cdaa 100644
--- a/indra/llplugin/llplugininstance.cpp
+++ b/indra/llplugin/llplugininstance.cpp
@@ -36,10 +36,6 @@
 #include "direct.h"	// needed for _chdir()
 #endif
 
-/** Virtual destructor. */
-LLPluginInstanceMessageListener::~LLPluginInstanceMessageListener()
-{
-}
 
 /** 
  * TODO:DOC describe how it's used
diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h
index e6926c3e377..0bcafaafa5e 100644
--- a/indra/llplugin/llplugininstance.h
+++ b/indra/llplugin/llplugininstance.h
@@ -39,7 +39,7 @@
 class LLPluginInstanceMessageListener
 {
 public:
-	virtual ~LLPluginInstanceMessageListener();
+	virtual ~LLPluginInstanceMessageListener() = default;
    /** Plugin receives message from plugin loader shell. */
 	virtual void receivePluginMessage(const std::string &message) = 0;
 };
diff --git a/indra/llplugin/llpluginmessage.cpp b/indra/llplugin/llpluginmessage.cpp
index b39e951155e..921d8d01fad 100644
--- a/indra/llplugin/llpluginmessage.cpp
+++ b/indra/llplugin/llpluginmessage.cpp
@@ -32,13 +32,6 @@
 #include "llsdserialize.h"
 #include "u64.h"
 
-/**
- * Constructor.
- */
-LLPluginMessage::LLPluginMessage()
-{
-}
-
 /**
  * Constructor.
  *
@@ -60,14 +53,6 @@ LLPluginMessage::LLPluginMessage(const std::string &message_class, const std::st
 	setMessage(message_class, message_name);
 }
 
-
-/**
- * Destructor.
- */
-LLPluginMessage::~LLPluginMessage()
-{
-}
-
 /**
  * Reset all internal state.
  */
@@ -389,15 +374,6 @@ LLPluginMessageListener::~LLPluginMessageListener()
 {
 	// TODO: should listeners have a way to ensure they're removed from dispatcher lists when deleted?
 }
-
-
-/**
- * Destructor
- */
-LLPluginMessageDispatcher::~LLPluginMessageDispatcher()
-{
-	
-}
 	
 /**
  * Add a message listener. TODO:DOC need more info on what uses this. when are multiple listeners needed?
diff --git a/indra/llplugin/llpluginmessage.h b/indra/llplugin/llpluginmessage.h
index f86b68d16e9..a8a499c2da0 100644
--- a/indra/llplugin/llpluginmessage.h
+++ b/indra/llplugin/llpluginmessage.h
@@ -37,10 +37,10 @@ class LLPluginMessage
 {
 	LOG_CLASS(LLPluginMessage);
 public:
-	LLPluginMessage();
+	LLPluginMessage() = default;
 	LLPluginMessage(const LLPluginMessage &p);
 	LLPluginMessage(const std::string &message_class, const std::string &message_name);
-	~LLPluginMessage();
+	~LLPluginMessage() = default;
 	
 	// reset all internal state
 	void clear(void);
@@ -120,7 +120,7 @@ class LLPluginMessageListener
 class LLPluginMessageDispatcher
 {
 public:
-	virtual ~LLPluginMessageDispatcher();
+	virtual ~LLPluginMessageDispatcher() = default;
 	
 	void addPluginMessageListener(LLPluginMessageListener *);
 	void removePluginMessageListener(LLPluginMessageListener *);
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index eb6bc3d6c92..344eb2fee0b 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -36,12 +36,6 @@
 
 #include "llapr.h"
 
-//virtual 
-LLPluginProcessParentOwner::~LLPluginProcessParentOwner()
-{
-	
-}
-
 bool LLPluginProcessParent::sUseReadThread = false;
 apr_pollset_t *LLPluginProcessParent::sPollSet = NULL;
 bool LLPluginProcessParent::sPollsetNeedsRebuild = false;
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h
index 871c624a704..b355a20c1a4 100644
--- a/indra/llplugin/llpluginprocessparent.h
+++ b/indra/llplugin/llpluginprocessparent.h
@@ -46,7 +46,7 @@
 class LLPluginProcessParentOwner : public boost::enable_shared_from_this < LLPluginProcessParentOwner > 
 {
 public:
-	virtual ~LLPluginProcessParentOwner();
+	virtual ~LLPluginProcessParentOwner() = default;
 	virtual void receivePluginMessage(const LLPluginMessage &message) = 0;
 	virtual bool receivePluginMessageEarly(const LLPluginMessage &message) {return false;};
 	// This will only be called when the plugin has died unexpectedly 
diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp
index 63ff5085c6e..1825fb72707 100644
--- a/indra/llplugin/llpluginsharedmemory.cpp
+++ b/indra/llplugin/llpluginsharedmemory.cpp
@@ -98,15 +98,15 @@ std::string LLPluginSharedMemory::createName(void)
 class LLPluginSharedMemoryPlatformImpl
 {
 public:
-	LLPluginSharedMemoryPlatformImpl();
-	~LLPluginSharedMemoryPlatformImpl();
+	LLPluginSharedMemoryPlatformImpl() = default;
+	~LLPluginSharedMemoryPlatformImpl() = default;
 	
 #if USE_APR_SHARED_MEMORY
-	apr_shm_t* mAprSharedMemory;	
+	apr_shm_t* mAprSharedMemory = nullptr;
 #elif USE_SHM_OPEN_SHARED_MEMORY
-	int mSharedMemoryFD;
+	int mSharedMemoryFD = -1;
 #elif USE_WIN32_SHARED_MEMORY
-	HANDLE mMapFile;
+	HANDLE mMapFile = nullptr;
 #endif
 
 };
@@ -140,17 +140,6 @@ LLPluginSharedMemory::~LLPluginSharedMemory()
 
 #if USE_APR_SHARED_MEMORY
 // MARK: apr implementation
-
-LLPluginSharedMemoryPlatformImpl::LLPluginSharedMemoryPlatformImpl()
-{
-	mAprSharedMemory = NULL;
-}
-
-LLPluginSharedMemoryPlatformImpl::~LLPluginSharedMemoryPlatformImpl()
-{
-	
-}
-
 bool LLPluginSharedMemory::map(void)
 {
 	mMappedAddress = apr_shm_baseaddr_get(mImpl->mAprSharedMemory);
@@ -248,16 +237,6 @@ bool LLPluginSharedMemory::detach(void)
 
 #elif USE_SHM_OPEN_SHARED_MEMORY
 // MARK: shm_open/mmap implementation
-
-LLPluginSharedMemoryPlatformImpl::LLPluginSharedMemoryPlatformImpl()
-{
-	mSharedMemoryFD = -1;
-}
-
-LLPluginSharedMemoryPlatformImpl::~LLPluginSharedMemoryPlatformImpl()
-{
-}
-
 bool LLPluginSharedMemory::map(void)
 {
 	mMappedAddress = ::mmap(NULL, mSize, PROT_READ | PROT_WRITE, MAP_SHARED, mImpl->mSharedMemoryFD, 0);
@@ -380,16 +359,6 @@ bool LLPluginSharedMemory::detach(void)
 
 // Reference: http://msdn.microsoft.com/en-us/library/aa366551(VS.85).aspx
 
-LLPluginSharedMemoryPlatformImpl::LLPluginSharedMemoryPlatformImpl()
-{
-	mMapFile = NULL;
-}
-
-LLPluginSharedMemoryPlatformImpl::~LLPluginSharedMemoryPlatformImpl()
-{
-	
-}
-
 bool LLPluginSharedMemory::map(void)
 {
 	mMappedAddress = MapViewOfFile(
diff --git a/indra/llprimitive/llprimtexturelist.cpp b/indra/llprimitive/llprimtexturelist.cpp
index 278576b9ae5..269b4f3628e 100644
--- a/indra/llprimitive/llprimtexturelist.cpp
+++ b/indra/llprimitive/llprimtexturelist.cpp
@@ -54,10 +54,6 @@ LLTextureEntry* LLPrimTextureList::newTextureEntry()
 	return (*sNewTextureEntryCallback)();
 }
 
-LLPrimTextureList::LLPrimTextureList()
-{
-}
-
 // virtual 
 LLPrimTextureList::~LLPrimTextureList()
 {
diff --git a/indra/llprimitive/llprimtexturelist.h b/indra/llprimitive/llprimtexturelist.h
index 5718ec2fb78..14470f6f748 100644
--- a/indra/llprimitive/llprimtexturelist.h
+++ b/indra/llprimitive/llprimtexturelist.h
@@ -54,7 +54,7 @@ class LLPrimTextureList
 	static void setNewTextureEntryCallback( LLTextureEntry* (*callback)() );
 	static LLTextureEntry* (*sNewTextureEntryCallback)(); 
 
-	LLPrimTextureList();
+	LLPrimTextureList() = default;
 	virtual ~LLPrimTextureList();
 
 	void clear();
diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
index b80de9ccd62..d2c69c5f8aa 100644
--- a/indra/llrender/llcubemap.cpp
+++ b/indra/llrender/llcubemap.cpp
@@ -59,10 +59,6 @@ LLCubeMap::LLCubeMap(bool init_as_srgb)
 	mTargets[5] = GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
 }
 
-LLCubeMap::~LLCubeMap()
-{
-}
-
 void LLCubeMap::initGL()
 {
 	llassert(gGLManager.mInited);
diff --git a/indra/llrender/llcubemap.h b/indra/llrender/llcubemap.h
index 95b6d120991..7b494c85f9d 100644
--- a/indra/llrender/llcubemap.h
+++ b/indra/llrender/llcubemap.h
@@ -75,7 +75,7 @@ class LLCubeMap : public LLRefCount
 
 protected:
 	friend class LLTexUnit;
-	~LLCubeMap();
+	~LLCubeMap() = default;
 	LLGLenum mTargets[6];
 	LLPointer<LLImageGL> mImages[6];
 	LLPointer<LLImageRaw> mRawImages[6];
diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp
index f128636ab29..4a1edf257d5 100644
--- a/indra/llrender/llfontbitmapcache.cpp
+++ b/indra/llrender/llfontbitmapcache.cpp
@@ -42,10 +42,6 @@ LLFontBitmapCache::LLFontBitmapCache()
 {
 }
 
-LLFontBitmapCache::~LLFontBitmapCache()
-{
-}
-
 void LLFontBitmapCache::init(S32 num_components,
 							 S32 max_char_width,
 							 S32 max_char_height)
diff --git a/indra/llrender/llfontbitmapcache.h b/indra/llrender/llfontbitmapcache.h
index 75df3a94a79..ecbb8ca6259 100644
--- a/indra/llrender/llfontbitmapcache.h
+++ b/indra/llrender/llfontbitmapcache.h
@@ -36,7 +36,7 @@ class LLFontBitmapCache : public LLTrace::MemTrackable<LLFontBitmapCache>
 {
 public:
 	LLFontBitmapCache();
-	~LLFontBitmapCache();
+	~LLFontBitmapCache() = default;
 
 	// Need to call this once, before caching any glyphs.
  	void init(S32 num_components,
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 1af1fff7c24..3c6783ca660 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -73,14 +73,6 @@ const F32 DROP_SHADOW_SOFT_STRENGTH = 0.3f;
 
 const U32 GLYPH_VERTICES = 6;
 
-LLFontGL::LLFontGL()
-{
-}
-
-LLFontGL::~LLFontGL()
-{
-}
-
 void LLFontGL::reset()
 {
 	mFontFreetype->reset(sVertDPI, sHorizDPI);
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index 2ffc16a1b3e..90b741264a2 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -79,8 +79,8 @@ class LLFontGL
 		DROP_SHADOW_SOFT
 	};
 
-	LLFontGL();
-	~LLFontGL();
+	LLFontGL() = default;
+	~LLFontGL() = default;
 
 
 	void reset(); // Reset a font after GL cleanup.  ONLY works on an already loaded font.
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index b7edf69f734..b804b71e24c 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -416,9 +416,7 @@ const U32 FENCE_WAIT_TIME_NANOSECONDS = 1000;  //1 ms
 class LLGLFence
 {
 public:
-	virtual ~LLGLFence()
-	{
-	}
+	virtual ~LLGLFence() = default;
 
 	virtual void placeFence() = 0;
 	virtual bool isCompleted() = 0;
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index ae7b76fcb7e..54b3e929995 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -318,10 +318,6 @@ LLGLSLShader::LLGLSLShader()
     
 }
 
-LLGLSLShader::~LLGLSLShader()
-{
-}
-
 void LLGLSLShader::unload()
 {
     mShaderFiles.clear();
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index a169a1a17cf..fb664bcab93 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -87,7 +87,7 @@ class LLGLSLShader
 	static bool sProfileEnabled;
 
 	LLGLSLShader();
-	~LLGLSLShader();
+	~LLGLSLShader() = default;
 
 	static GLuint sCurBoundShader;
 	static LLGLSLShader* sCurBoundShaderPtr;
diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h
index bd13293d17b..7cc889d0ba2 100644
--- a/indra/llrender/llrender2dutils.h
+++ b/indra/llrender/llrender2dutils.h
@@ -151,7 +151,7 @@ class LLRender2D final : public LLParamSingleton<LLRender2D>
 class LLImageProviderInterface
 {
 protected:
-	LLImageProviderInterface() {};
+	LLImageProviderInterface() = default;
 	virtual ~LLImageProviderInterface();
 public:
 	virtual LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority) = 0;
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 646d819ed33..c37316b10aa 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -37,15 +37,6 @@ using std::string;
 
 LLShaderMgr * LLShaderMgr::sInstance = NULL;
 
-LLShaderMgr::LLShaderMgr()
-{
-}
-
-
-LLShaderMgr::~LLShaderMgr()
-{
-}
-
 // static
 LLShaderMgr * LLShaderMgr::instance()
 {
diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h
index 611d8a6876d..760f2200f9d 100644
--- a/indra/llrender/llshadermgr.h
+++ b/indra/llrender/llshadermgr.h
@@ -33,8 +33,8 @@
 class LLShaderMgr
 {
 public:
-	LLShaderMgr();
-	virtual ~LLShaderMgr();
+	LLShaderMgr() = default;
+	virtual ~LLShaderMgr() = default;
 
     // clang-format off
     typedef enum
diff --git a/indra/llrender/lltexture.cpp b/indra/llrender/lltexture.cpp
index 6eef36216c1..249561e1b8e 100644
--- a/indra/llrender/lltexture.cpp
+++ b/indra/llrender/lltexture.cpp
@@ -25,11 +25,6 @@
 #include "linden_common.h"
 #include "lltexture.h"
 
-//virtual 
-LLTexture::~LLTexture()
-{
-}
-
 S8   LLTexture::getType() const { llassert(false); return 0; }
 void LLTexture::setKnownDrawSize(S32 width, S32 height) { llassert(false); }
 bool LLTexture::bindDefaultImage(const S32 stage) { llassert(false); return false; }
diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
index 41481fb8a72..41ef6030eed 100644
--- a/indra/llrender/lltexture.h
+++ b/indra/llrender/lltexture.h
@@ -48,7 +48,7 @@ class LLTexture : public virtual LLRefCount, public LLTrace::MemTrackable<LLText
 	friend class LLFontGL ;
 
 protected:
-	virtual ~LLTexture();
+	virtual ~LLTexture() = default;
 
 public:
 	LLTexture()
diff --git a/indra/llwindow/llkeyboardheadless.cpp b/indra/llwindow/llkeyboardheadless.cpp
index cb9361f087f..6dbbaeccdfe 100644
--- a/indra/llwindow/llkeyboardheadless.cpp
+++ b/indra/llwindow/llkeyboardheadless.cpp
@@ -28,9 +28,6 @@
 #include "llkeyboardheadless.h"
 #include "llwindowcallbacks.h"
 
-LLKeyboardHeadless::LLKeyboardHeadless()
-{ }
-
 void LLKeyboardHeadless::resetMaskKeys()
 { }
 
diff --git a/indra/llwindow/llkeyboardheadless.h b/indra/llwindow/llkeyboardheadless.h
index 74ab87c0032..810979d3041 100644
--- a/indra/llwindow/llkeyboardheadless.h
+++ b/indra/llwindow/llkeyboardheadless.h
@@ -32,7 +32,7 @@
 class LLKeyboardHeadless : public LLKeyboard
 {
 public:
-	LLKeyboardHeadless();
+	LLKeyboardHeadless() = default;
 	/*virtual*/ ~LLKeyboardHeadless() = default;
 
 	/*virtual*/ BOOL	handleKeyUp(const U32 key, MASK mask) override;
diff --git a/indra/llwindow/llkeyboardmacosx.h b/indra/llwindow/llkeyboardmacosx.h
index 17398d80b97..90b9dda0410 100644
--- a/indra/llwindow/llkeyboardmacosx.h
+++ b/indra/llwindow/llkeyboardmacosx.h
@@ -42,7 +42,7 @@ class LLKeyboardMacOSX : public LLKeyboard
 {
 public:
 	LLKeyboardMacOSX();
-	/*virtual*/ ~LLKeyboardMacOSX() {};
+	/*virtual*/ ~LLKeyboardMacOSX() = default;
 	
 	/*virtual*/ BOOL	handleKeyUp(const U32 key, MASK mask);
 	/*virtual*/ BOOL	handleKeyDown(const U32 key, MASK mask);
diff --git a/indra/llwindow/llkeyboardsdl.h b/indra/llwindow/llkeyboardsdl.h
index b156ae33f0b..49e154d8016 100644
--- a/indra/llwindow/llkeyboardsdl.h
+++ b/indra/llwindow/llkeyboardsdl.h
@@ -34,7 +34,7 @@ class LLKeyboardSDL final : public LLKeyboard
 {
 public:
 	LLKeyboardSDL();
-	/*virtual*/ ~LLKeyboardSDL() {};
+	/*virtual*/ ~LLKeyboardSDL() = default;
 
 	/*virtual*/ BOOL	handleKeyUp(const U32 key, MASK mask);
 	/*virtual*/ BOOL	handleKeyDown(const U32 key, MASK mask);
diff --git a/indra/llwindow/llmousehandler.h b/indra/llwindow/llmousehandler.h
index d221dd117c8..cb01cd1ccea 100644
--- a/indra/llwindow/llmousehandler.h
+++ b/indra/llwindow/llmousehandler.h
@@ -38,8 +38,8 @@
 class LLMouseHandler
 {
 public:
-	LLMouseHandler() {}
-	virtual ~LLMouseHandler() {}
+	LLMouseHandler() = default;
+	virtual ~LLMouseHandler() = default;
 
 	typedef enum {
 		SHOW_NEVER,
diff --git a/indra/llwindow/llpreeditor.h b/indra/llwindow/llpreeditor.h
index 9802fd8606d..548fd354a28 100644
--- a/indra/llwindow/llpreeditor.h
+++ b/indra/llwindow/llpreeditor.h
@@ -38,7 +38,7 @@ class LLPreeditor
 	
 	// We don't delete against LLPreeditor, but compilers complain without this...
 	
-	virtual ~LLPreeditor() {};
+	virtual ~LLPreeditor() = default;
 
 	// Discard any preedit info. on this preeditor.
 	
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index 30bc743e72f..1952166876a 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -121,10 +121,6 @@ LLWindow::LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags)
 {
 }
 
-LLWindow::~LLWindow()
-{
-}
-
 //virtual
 BOOL LLWindow::isValid()
 {
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 9eba7d62cb3..e269c4b8e8e 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -176,7 +176,7 @@ class LLWindow : public LLInstanceTracker<LLWindow>
     virtual bool getInputDevices(U32 device_type_filter, void * devices_callback, void* userdata) { return false; };
 protected:
 	LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags);
-	virtual ~LLWindow();
+	virtual ~LLWindow() = default;
 	// Defaults to true
 	virtual BOOL isValid();
 	// Defaults to true
@@ -229,8 +229,8 @@ class LLWindow : public LLInstanceTracker<LLWindow>
 class LLSplashScreen
 {
 public:
-	LLSplashScreen() { };
-	virtual ~LLSplashScreen() { };
+	LLSplashScreen() = default;
+	virtual ~LLSplashScreen() = default;
 
 
 	// Call to display the window.
diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h
index e688bf3d471..15b0add5943 100644
--- a/indra/llwindow/llwindowcallbacks.h
+++ b/indra/llwindow/llwindowcallbacks.h
@@ -32,7 +32,7 @@ class LLWindow;
 class LLWindowCallbacks
 {
 public:
-	virtual ~LLWindowCallbacks() {}
+	virtual ~LLWindowCallbacks() = default;
 	virtual BOOL handleTranslatedKeyDown(KEY key,  MASK mask, BOOL repeated);
 	virtual BOOL handleTranslatedKeyUp(KEY key,  MASK mask);
 	virtual void handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level);
diff --git a/indra/llwindow/llwindowheadless.cpp b/indra/llwindow/llwindowheadless.cpp
index 70f473281b6..3840a50a0ca 100644
--- a/indra/llwindow/llwindowheadless.cpp
+++ b/indra/llwindow/llwindowheadless.cpp
@@ -43,11 +43,6 @@ LLWindowHeadless::LLWindowHeadless(LLWindowCallbacks* callbacks, const std::stri
 	gKeyboard->setCallbacks(callbacks);
 }
 
-
-LLWindowHeadless::~LLWindowHeadless()
-{
-}
-
 void LLWindowHeadless::swapBuffers()
 {
 }
diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h
index c692666df14..fc75e7a691a 100644
--- a/indra/llwindow/llwindowheadless.h
+++ b/indra/llwindow/llwindowheadless.h
@@ -98,7 +98,7 @@ class LLWindowHeadless : public LLWindow
 		S32 width, S32 height,
 		U32 flags,  BOOL fullscreen, BOOL clear_background,
 		BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
-	virtual ~LLWindowHeadless();
+	virtual ~LLWindowHeadless() = default;
 
 private:
 };
@@ -106,8 +106,8 @@ class LLWindowHeadless : public LLWindow
 class LLSplashScreenHeadless : public LLSplashScreen
 {
 public:
-	LLSplashScreenHeadless() {};
-	virtual ~LLSplashScreenHeadless() {};
+	LLSplashScreenHeadless() = default;
+	virtual ~LLSplashScreenHeadless() = default;
 
 	/*virtual*/ void showImpl() {};
 	/*virtual*/ void updateImpl(const std::string& mesg) {};
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index b5af4d5f766..45bf8d8ba56 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -1697,10 +1697,6 @@ LLSplashScreenMacOSX::LLSplashScreenMacOSX()
 	mWindow = NULL;
 }
 
-LLSplashScreenMacOSX::~LLSplashScreenMacOSX()
-{
-}
-
 void LLSplashScreenMacOSX::showImpl()
 {
 	// This code _could_ be used to display a spash screen...
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 32a6dcf79bb..b048dacc704 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -227,7 +227,7 @@ class LLSplashScreenMacOSX : public LLSplashScreen
 {
 public:
 	LLSplashScreenMacOSX();
-	virtual ~LLSplashScreenMacOSX();
+	virtual ~LLSplashScreenMacOSX() = default;
 
 	/*virtual*/ void showImpl();
 	/*virtual*/ void updateImpl(const std::string& mesg);
diff --git a/indra/newview/tests/llviewershadermgr_stub.cpp b/indra/newview/tests/llviewershadermgr_stub.cpp
index 18eff72f3c0..fd9320aedb9 100644
--- a/indra/newview/tests/llviewershadermgr_stub.cpp
+++ b/indra/newview/tests/llviewershadermgr_stub.cpp
@@ -26,9 +26,6 @@
 
 #include "../llviewershadermgr.h"
 
-LLShaderMgr::LLShaderMgr() {}
-LLShaderMgr::~LLShaderMgr() {}
-
 LLViewerShaderMgr::LLViewerShaderMgr() {}
 LLViewerShaderMgr::~LLViewerShaderMgr() {}
 
-- 
GitLab