diff --git a/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp b/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp
index 4673d962758b24f3c9b1f29eb7d07658a13850ed..13db6651c989bad44e7c6d251dfd2c89770a52ed 100644
--- a/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp
+++ b/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp
@@ -610,7 +610,7 @@ class DummySweep
 {
 public:
    DummySweep( )
-   {}
+   = default;
 
    void operator()(IBlock * const /*block*/)
    {}
diff --git a/src/core/config/Config.cpp b/src/core/config/Config.cpp
index 48277f3bc6336d225909ff0172e98da0a76233bf..54c147b00caf44ca3f616d0f6ac74661fc51dc2f 100644
--- a/src/core/config/Config.cpp
+++ b/src/core/config/Config.cpp
@@ -64,7 +64,7 @@ Config::Config()
 // \brief Destructor for the Config class.
  */
 Config::~Config()
-{}
+= default;
 //**********************************************************************************************************************
 
 
@@ -473,16 +473,6 @@ Config::Block::Block( const std::string& key )
 //**********************************************************************************************************************
 
 
-//**********************************************************************************************************************
-/*!\fn Config::Block::Block( const Block& b )
-// \brief The copy constructor for the Block class.
- */
-Config::Block::Block( const Block& b )
-   :key_(b.key_),blocks_(b.blocks_),params_(b.params_)
-{}
-//**********************************************************************************************************************
-
-
 //**********************************************************************************************************************
 /*!\fn Config::Block& Config::Block::operator=( const Block& b )
 // \brief The copy assignment operator for the Block class.
@@ -508,7 +498,7 @@ Config::Block& Config::Block::operator=( const Block& b )
 // \brief Default destructor of the Block class.
  */
 Config::Block::~Block()
-{}
+= default;
 //**********************************************************************************************************************
 
 
diff --git a/src/core/config/Config.h b/src/core/config/Config.h
index 9ed1ce81984b627e25cb4c4b7ef014a9e786dacc..c915a2e4cbb76bf37e7baa0d31af3e483239c6d0 100644
--- a/src/core/config/Config.h
+++ b/src/core/config/Config.h
@@ -172,7 +172,7 @@ public:
    public:
       //**Constructors**************************************************************************************************
       Block( const std::string& key="" );
-      Block( const Block& b );
+      Block( const Block& b ) = default;
       //****************************************************************************************************************
 
       //**Destructor****************************************************************************************************
diff --git a/src/geometry/bodies/Sphere.cpp b/src/geometry/bodies/Sphere.cpp
index f49cae94d354ec9628c4669f5229f8c022c59ce3..f7fc0dce0f1bc57ca1da2e0d686c832552ebb8dd 100644
--- a/src/geometry/bodies/Sphere.cpp
+++ b/src/geometry/bodies/Sphere.cpp
@@ -32,13 +32,6 @@ namespace geometry {
       updateBoxes();
    }
 
-   Sphere::Sphere( const Sphere & o )
-      : midpoint_( o.midpoint_ ),
-        radius_( o.radius_ ),
-        boundingBox_ ( o.boundingBox_ ),
-        innerBox_ ( o.innerBox_ )
-   {}
-
    void Sphere::updateBoxes()
    {
       static const real_t oneOverSqrt3 = real_t(1) / std::sqrt( real_t(3) );
diff --git a/src/geometry/bodies/Sphere.h b/src/geometry/bodies/Sphere.h
index 67330978a7d6bd51aece8489b1a3a9f574bcb9fe..f4050d044b242e7c874fc796674093fbf4e6b02e 100644
--- a/src/geometry/bodies/Sphere.h
+++ b/src/geometry/bodies/Sphere.h
@@ -48,7 +48,7 @@ namespace geometry {
    public:
 
       explicit Sphere( const Vector3<real_t> & midp, real_t rad );
-      Sphere( const Sphere & o );
+      Sphere( const Sphere & o ) = default;
 
       void setMidpoint( const Vector3<real_t> & point ) { midpoint_ = point;         updateBoxes(); }
       void setMidpoint( real_t newVal, uint_t coord )   { midpoint_[coord] = newVal; updateBoxes(); }
diff --git a/src/gui/Gui.cpp b/src/gui/Gui.cpp
index 414aa029a696e6457fa6be81f86883a01fc10697..e23df588e124890272dde64456637f49add5cd38 100644
--- a/src/gui/Gui.cpp
+++ b/src/gui/Gui.cpp
@@ -220,7 +220,7 @@ GUI::GUI(timeloop::ITimeloop & timeloop, const shared_ptr<StructuredBlockForest>
 {
 }
 
-GUI::~GUI() {}
+GUI::~GUI() = default;
 
 void GUI::run() {
    timeloop_.run();
diff --git a/src/gui/PropertyTree.cpp b/src/gui/PropertyTree.cpp
index 5ac247c1e977dbe4ddddefda3154ef0d93115047..a6dd79d5c01650e95c2c7803edb1ff3a79203ad4 100644
--- a/src/gui/PropertyTree.cpp
+++ b/src/gui/PropertyTree.cpp
@@ -123,7 +123,7 @@ namespace gui {
 
 
    PropertyTree::~PropertyTree()
-   {}
+   = default;
 
 
    void PropertyTree::setBlock( IBlock * a)
diff --git a/src/pe/contact/Contact.cpp b/src/pe/contact/Contact.cpp
index 7bc7dc04127ff734e3153201f3037fb3663cf72e..ce7c59ebeb4662606397cde1e3ea0cb72ef54123 100644
--- a/src/pe/contact/Contact.cpp
+++ b/src/pe/contact/Contact.cpp
@@ -77,7 +77,7 @@ Contact::Contact( GeomID g1, GeomID g2, const Vec3& gpos, const Vec3& normal, re
 /*!\brief Destructor for the Contact class.
  */
 Contact::~Contact()
-{}
+= default;
 //*************************************************************************************************
 
 //=================================================================================================
diff --git a/src/pe/debug/BodyData.cpp b/src/pe/debug/BodyData.cpp
index 881b65a0b03128adf8b6669ce9d03f43a6a57cfa..05e32e67815dab1e9fd5021964c38d5768bad560 100644
--- a/src/pe/debug/BodyData.cpp
+++ b/src/pe/debug/BodyData.cpp
@@ -37,7 +37,7 @@ namespace debug {
 //
 //=================================================================================================
 
-BodyData::BodyData() {}
+BodyData::BodyData() = default;
 
 BodyData::BodyData(ConstBodyID rb)
    : uid(rb->getID())
diff --git a/src/pe/rigidbody/GeomPrimitive.cpp b/src/pe/rigidbody/GeomPrimitive.cpp
index ce6d2d8113c69fde7724259fde28cbc46c5247ee..0594e19a3a6b91331d424a5d414b78fbdc7c7712 100644
--- a/src/pe/rigidbody/GeomPrimitive.cpp
+++ b/src/pe/rigidbody/GeomPrimitive.cpp
@@ -64,7 +64,7 @@ GeomPrimitive::GeomPrimitive( id_t const typeID, id_t sid, id_t uid, MaterialID
 /*!\brief Destructor for the Primitive class.
  */
 GeomPrimitive::~GeomPrimitive()
-{}
+= default;
 //*************************************************************************************************
 
 }  // namespace pe
diff --git a/src/pe/rigidbody/RigidBody.cpp b/src/pe/rigidbody/RigidBody.cpp
index ac99d0d5fd4ddd3867e3af50f9fc1f8053466bb5..f30f35ce6c244393433217aafb54e914a2f79223 100644
--- a/src/pe/rigidbody/RigidBody.cpp
+++ b/src/pe/rigidbody/RigidBody.cpp
@@ -75,8 +75,7 @@ RigidBody::RigidBody( id_t const typeID, id_t sid, id_t uid )
 /*!\brief Destructor for the RigidBody class.
  */
 RigidBody::~RigidBody()
-{
-}
+= default;
 //*************************************************************************************************
 
 
diff --git a/src/python_coupling/Shell.cpp b/src/python_coupling/Shell.cpp
index 8f4379a9ed68e2810f920c440d5471181d5ec437..1a34e91a4c4b0d717ec8201cc82c7db47eafd791 100644
--- a/src/python_coupling/Shell.cpp
+++ b/src/python_coupling/Shell.cpp
@@ -238,7 +238,7 @@ namespace walberla {
 namespace python_coupling {
 
    Shell::Shell( const std::string & )  {}
-   Shell::~Shell() {}
+   Shell::~Shell() = default;
    void Shell::operator()() {}
 
 } // namespace python_coupling
diff --git a/tests/blockforest/BlockForestTest.cpp b/tests/blockforest/BlockForestTest.cpp
index 19cda03b59bf89485ae338e659468de2a650022b..490992e90841701ce87e507b391dc1daea1d51bd 100644
--- a/tests/blockforest/BlockForestTest.cpp
+++ b/tests/blockforest/BlockForestTest.cpp
@@ -139,7 +139,7 @@ static uint_t* blockdata5( const IBlock* const /*block*/ ) {
 class Base
 {
 public:
-   virtual ~Base() {}
+   virtual ~Base() = default;
    bool operator==( const Base& /*rhs*/ ) const { return true; }
            uint_t override() const { return 1; }
    virtual uint_t func()     const { return 2; }
@@ -169,7 +169,7 @@ static Derived* blockdataDerived( const IBlock* const /*block*/ )
 class SecondBase
 {
 public:
-   virtual ~SecondBase() {}
+   virtual ~SecondBase() = default;
    bool operator==( const SecondBase& /*rhs*/ ) const { return true; }
    uint_t override() const { return 100; }
 };
diff --git a/tests/core/logging/LoggingTest.cpp b/tests/core/logging/LoggingTest.cpp
index f3068417ee17071e35460f1896130cc1343835c3..dff85f06bfc0e6e71f0090153a1dfd2be5ca7d75 100644
--- a/tests/core/logging/LoggingTest.cpp
+++ b/tests/core/logging/LoggingTest.cpp
@@ -33,7 +33,7 @@ class MyStamp : public logging::Logging::CustomStamp
 {
 public:
    MyStamp() : step_(uint_c(0)) {}
-   ~MyStamp() {}
+   ~MyStamp() = default;
    void step( uint_t s ) { step_ = s; }
    std::string stamp()
    {
diff --git a/tests/gather/MPIGatherSchemeTest.cpp b/tests/gather/MPIGatherSchemeTest.cpp
index 1bc3f7de095adf9d452fc9ab584536238e0e4778..ae32771d4f9032d0c0e62359319481c7bfcbb1e8 100644
--- a/tests/gather/MPIGatherSchemeTest.cpp
+++ b/tests/gather/MPIGatherSchemeTest.cpp
@@ -39,8 +39,8 @@ namespace walberla {
 class TestGatherPackInfo : public gather::GatherPackInfo
 {
 public:
-   TestGatherPackInfo() {}
-   virtual ~TestGatherPackInfo() {}
+   TestGatherPackInfo() = default;
+   virtual ~TestGatherPackInfo() = default;
 
 
    virtual void packData  ( const IBlock *, mpi::GenericSendBuffer<unsigned char> & outBuffer )
diff --git a/tests/pe/SetBodyTypeIDs.cpp b/tests/pe/SetBodyTypeIDs.cpp
index 9e99059b24d2fb962f788ff9697130c836dbcf57..6cc5999945b74729741aaf0feb62c9a0df2a13f3 100644
--- a/tests/pe/SetBodyTypeIDs.cpp
+++ b/tests/pe/SetBodyTypeIDs.cpp
@@ -38,7 +38,7 @@ namespace pe {
 class Base{
 public:
     Base(id_t const typeID) : typeID_(typeID) {}
-    virtual ~Base() {}
+    virtual ~Base() = default;
     id_t getTypeID() const { return typeID_;}
 private:
     id_t typeID_;
diff --git a/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp b/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp
index cede11322ce9cfd7dd8562248bac3eca09c0cb36..f8931f9f84e60e23464e2f3838af523cf28637e9 100644
--- a/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp
+++ b/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp
@@ -558,7 +558,7 @@ class DummySweep
 {
 public:
    DummySweep( )
-   {}
+   = default;
 
    void operator()(IBlock * const /*block*/)
    {}