diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h
index 4b827efd4f370e83dd83f979626dfd1bdbea5f65..1471dfb03064465f770d78d5c38557d6d46bfb37 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 5497b13cfcc296c34e4b50a1c410ab6b3856a86c..6de398ac7d122d4443cfbf38cba3d543392c4786 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 d34b650df541e6ec47c8cf2eebd064285d214119..edb0c1a23f0275df4cd800608c03e2d2601a4a31 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 37ea1cb4f5197e1b42a2c2ae30166550eeef79a9..8b0e0b782e17f448957b92047dfad5980b5d6a75 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 4af69471379e43c278af0f022dbf41ef1067899b..853f53cc9db43d5b10f0b7939398384c93f086b3 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 b3eb4e147ea7373c2a68b85a64844b49a4a8cdcb..9ecfe28a85f083dc6259f140dfb42fc4b62a495c 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 2235496ac5f411882df6cf387887ea9755447eb2..34f0cf7bc1202e5de8d70f19094151463c335452 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 66654b360425784dff6e02b4bcf88f670414700a..27c8ba2e6d95325763469e0c585ab605e9cd8c5f 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 229bfdbe07ec2415ff9ff5bbe4332dc5feaa78c2..5f8811a83eeff5ec8ab226ed5872d8d72492d3b6 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 33e205c1c961092e347990b38b3e9d56d54bfb69..50069b0c31917cb6f1d46c5b5eda9f6b131986f4 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 083e085bb3a5edc72db1cdedc16bfdb174ba37f9..0a07215a2fd9448cd1b6839de852dbf8a4e4cb29 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 54e66855addff41de839b7f43b42e73f23fc7a3a..d26eb11542174deeb061044024612f7f3d617eb0 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 67d5bbbecb7a1df589f18f264dcc8e6263233fdf..99e6ffb8bafb0a9d3030f48314571336b943326e 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 07a1927550c9dd48bbf579278ebd3dd3a863d0c9..a706b800aa1f23463511aec8c53e5776a60eda80 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 8806a9c28220426aa31458540f82240b86253220..11fc8f5df9c4c5f96da017c1cd6471b0b88cec04 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 37b9e9b83e115f638eed0cd7561db7c92d8e7ba8..22745827fbaddbb515aab023e87630e17cbad0e3 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 b25de41d6c8e9ab64c9974e6821023e1c4c3b2a7..4a53f4940f8896d5510627a9f3777d337e35d9ce 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 51abf7c321fa83c81d5bb27980acdfb04bbf2d3b..ea20c993497af8af4f1da048fa810b604f3a268f 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 6720ce7f9d7b9910423d2414e1590da28c2daead..12ffac85d872ff3a8baf4d858e7c4d2b0b13cf6a 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 19f24834c31fc86d15d83a48849d68d13c9daf1e..071e0a14509398405990313f198e8849093d7d50 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 39508c1c52e3ee75d069a88aba6913cdca24c7a6..f6686cb0922efd760d5c869ebe240227c776afc7 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 19749612f3a3b77187338e3e24dffa1c6b6fea10..ead29a22e9ef5f11639ddf3e82f54154e3b5265c 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 bcda6746a1941497d8868173dffba7e7b07aa141..7e50b3da0ca01295f4c2cd0e4040efe676f1b0cd 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 6e4d6c2013868de590fb649554e17d8a2523ae9a..c7f51dea30e2a2964a8adb6a1a48e3f0c516f5f1 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 76e3a7a5a3786dc3ca8cc7697f6bdaa2fed8caa6..16b13bea748c4c9f57979f20b9a28a340b0e1571 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 c609232c6ab6f8cb9e7009eaf8911d452acc058f..c8f03ff2a70417c7e65430f890e577c61737aecb 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 572cf39cb8c73f8aa334b6a45de8f3bb09124141..11dc7835b19c85bc3ff1780c2361682bd7de5247 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 fefac0262cb2c902bd5984fb44fd5e9c56fb2493..a53b3d2512d1c0cddfdd0a336fefbf5f67d64982 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 43c63ac4dff8dc01146d3f85a72bf65f57154275..70ff9238c47f853d8871e4efa6d0ff85849b7ccd 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 b271707c622cca4c70bb8f37182b19a699361548..aac6d53e75134e84395d60b0ed01a61d8d1439f2 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 6487632e0c36e882820fcfc23c20f030e617e535..b1fe4348a7e11b9e591634d56a8f3316c2e755bc 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 1460f5251f8a242881d8446db375f315c741ac2d..1bbb3e01f63f9f9f129dafb12b46aa266e7fca07 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 0c9a0dc95bcf2f50b8f1cad4263735e0951b68ef..d3c1d96db33c9c0e570c7b7d8266a0f86710273f 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 8b8dfde030d2a81173175ac66b18712c79f2c9d3..58a784d62b4eabf74ad303c08038931c82b850f5 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 8c5c8927355bc1cc7e84dce67705d2cd28b55da5..166ee1f1028d2489e6a8eb4e4ef6f75b12975dae 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 648bc5cfd85bcaa150e8f87643d4b4ef9b1b6290..658984bfd61f32fd6f5671a8667d2bf0d71e0fe6 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 ce40bdfc08f98c3736f78fd99d13e7ced3398893..e8f697e392abd123f48b3ca42700450c3c03ad4a 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 d85d802f8d32168e4039a7964bdf95904bb7c894..1e1f179399cd97220add7ab5a696448646a9f889 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 e8d245f530bdf0deb829fb4b8b7ac731def1f7bb..beab086f552d5ad99d8eb8d9ad258037808a340d 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 ac0f9f7edb7195e968e6a40a3df1dcd07ecf4917..fd0ac217d8f1f9de81d54c2fcfa559c7f657abbc 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 2a1a7072c7cca2c45b12662ada10a5cc244d0b00..855bb437743899db4b219852db11b211f0cef5aa 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 b729ebafa98648d5a3ad0827c6b5fb4ba3e8d0ae..17f4f276ee0fccdaa7373e5126c75c69a79b24b2 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 65125468cf0217296872186286738f01c45554f8..30b30f1bce55d6c5541fde56748fd4936e908b31 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 ddcc13d9695692038c2190c0367bcb12353e8220..ee23fbbf7bcce9b20471a5cd37f5d205e3f15f16 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 9c09aeb44ca42bf5408391a12c488f8c4ffcb135..801ee735beffdfca275f61b4151a6a9904fd491c 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 968995edf2739e926fedc95d3270081380d4a099..9d2ff07bdedded87175ceb9560791d3542c25e42 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 1cdb2f79b12d926270f92ebe60fa77fb1a50c95f..cff1306e2ed1f7a37a67ae00da6a37aa82398c4c 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 6aad153c24c893c2578359f65749623c9a76181a..eb95e87dd30efe9cea07bc85e978f74a8b7f4201 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 340d4e88b03fff9c12c87cfa8ada3a453f3b3c56..cfc96793fc93b9ce721b9057dbe9eb057e04f0ff 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 f89f9dc81daf235c87958e4cec03285d827c291d..7066d2c8d9de29599d5a71356a51ffd2c68715ed 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 985042417eff81c70751db76482c94fe8e759f7e..87b9ddf3526206d7707051ca4f2de143304a2429 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 c506af19ce85ef8b04ce7bc797142340677a8a4b..254e3390e979d0d47216fb0ebf35c73919ed27da 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 7db5f0b27f4c418fbe5051c6efe7f0a59499c2f8..bb4dbdba56cdd555b60556d5d4b599dbc4fe0f72 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 f49209bed0f2054069dff6f618f07e0513f95e80..83e191b00739d14b73f8d43651611bbab7abb510 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 2add4213a6dcabdef7077c459cf9013710a32e87..b0a2b606ba0b230791192008a2bd01743efe42b1 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 e4f5fb3a38d68dfc7067a2e93691a616c642cd55..d8f281aa69b79af4a5e85b63e409cdc24049129e 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 479a256bdd7f75c1b1110abbf59151e6b53bc64a..574b3d878870b6455568d9193f14eefd7d4cfef5 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 89f55eaf716ac42b2ec0dc54cf1fb151a08e80a9..da7defc73e6e418625d9795a8cc1fc592acf68e7 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 7cde82a20e6d58aedafe33fe776a165fc8129b97..773dcf7cdaaf292a4fe8dc5b58f67a3415aea2f8 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 e6926c3e3779157e38f8f2ac457621db8fc1a30f..0bcafaafa5e4ffab6a0142ccdad098550c8c62db 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 b39e951155e5fdd7d8e778ce8a6b88f9388bf7f0..921d8d01fadec58375d3e1a25f0b9497cb113c40 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 f86b68d16e96184fd25ad94de27d38183605dcd2..a8a499c2da029ea03e854cb671111be0c2a37fe0 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 eb6bc3d6c92984edfa2ffc33b565f56746dd2c91..344eb2fee0b467ef6ba0e9adca84bedff0ebca73 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 871c624a70425dcb3a0d3556a34d199f804050d0..b355a20c1a4ff8281f0713c2df8a95ec1e7e25e2 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 63ff5085c6e1705f180d0c361a45bf305a1fe196..1825fb7270761c73af8166bc38a9f111307bae46 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 278576b9ae5fbc0b62166c570c3f028aa6e50fcc..269b4f3628ef74ecb48db28e9d7eca7a23599a6e 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 5718ec2fb781c8db39a912fad6b066d2fc94b566..14470f6f7487786e47b4ee45d2861e77d33a1bac 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 b80de9ccd625f971410f91d3350e1e804a22ecc2..d2c69c5f8aa6d34154ceffa37865916ad25f496a 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 95b6d1209913d04b3353c10c8fd6f312e9dbeabf..7b494c85f9dfb3be0f315c081c22e4fe418dc221 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 f128636ab29b33b142dd1bf6d880c780da67c801..4a1edf257d5f46a5fce5c43f6b5eea64bd24ae89 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 75df3a94a796fab48d4f7c63c3f03c95beef44c5..ecbb8ca6259bb49e09a78404e2fd60832fb2d4b1 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 1af1fff7c2479e579bfd6821de618aca2f29e0eb..3c6783ca66094aacd650f43994572e4725e50f0f 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 2ffc16a1b3e2bc5f1d728cf1fe084f8954ca7bd8..90b741264a2b36051aa98d7c3b68f1fbd5cd7430 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 b7edf69f73418cbaed15741103d0d298017e578a..b804b71e24cd3eb515ea2243032a14f9fab70911 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 ae7b76fcb7e77fc838fddefd003b5ddf0ddae50f..54b3e92999535ed42e77b19fa84be7b4bee24674 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 a169a1a17cf998a150bf2c276530e6fd994f6bea..fb664bcab938dea28faeaac3bbea5292e2d1bc6f 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 bd13293d17b59064bcfc8422ae301211081c10f8..7cc889d0ba248fbd6627db84af606e9dd71dc908 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 646d819ed33286b40d59207e7ebfa13de3c6286f..c37316b10aaa3dd4e9a59c83dc4946fe9c7697b2 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 611d8a6876d74bed9c6dc464e16584eb599a8c8b..760f2200f9d33823e21c5cd42659a82e0410424a 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 6eef36216c1926380ebbe45c3ceacddc44d1cc36..249561e1b8e4fba156948099c32e18e8dee9c3aa 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 41481fb8a722d23fd06e999ee9a9c7493ea02e59..41ef6030eedaf6b4ef3fe541f27089ff58dbeb47 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 cb9361f087fb4c0ad56a95b51b8387d526ff781e..6dbbaeccdfeded550125d82116abac53053a3dc2 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 74ab87c0032c798c5652b04745f5513eb9be37a0..810979d30412213a7dc366896b2fee982eba9c6b 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 17398d80b976081c90de56173c83c981276545a5..90b9dda0410a81addd8d3ac8a6e1ea698373ea00 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 b156ae33f0be434b0e9da87db013a1113d33132b..49e154d8016e9030d464dbf7e3d9cfc960fe2b23 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 d221dd117c89ff9c4183bc6193f7b69b19d0892d..cb01cd1ccea40d5123e104eb90636c0ecf4a4ce7 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 9802fd8606d7177e9ca29afae0c565cd77204978..548fd354a288fe6ebafcb71e8487ca4f79ad279e 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 30bc743e72fbf31b5efb889dd4995beaeecea8e0..1952166876a1aa63c7088ae4d6de15259591fe14 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 9eba7d62cb324b1046ba6cc0ebbe26e9a5fb2502..e269c4b8e8e13fb34b0540441ddec3bd43a3c2a6 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 e688bf3d471fe076be7c7ec31d467d0a38fca4c2..15b0add59432e5e3d7c0bb054d7f915fa69c5fcd 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 70f473281b6170f1c16ebb0bdbd66874952be003..3840a50a0caa9eb944ad3ec719fd0b8c3c6472a9 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 c692666df140d2203d35c2f2fe8c38b028efda79..fc75e7a691a323024eed5b6d4f8c510c007b76bf 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 b5af4d5f76668d46ec01f94774fde32e5f8f1c40..45bf8d8ba565bc0d36c52987e730c0df21b543d2 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 32a6dcf79bbf844eb66225ab9ac5c99bcf040f6d..b048dacc70435d21965f9dba8a560ba70314f882 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 18eff72f3c07da40a2c81846b19d9b5814d47aca..fd9320aedb9b5f980f64032478e38a6f83887005 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() {}