diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SiLayerBuilder.cxx b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SiLayerBuilder.cxx
index 2069c0d1f6b9fc11cef9f48785701a3bffc28576..16931a5316a957deb32295fb24386004fc1beca5 100755
--- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SiLayerBuilder.cxx
+++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SiLayerBuilder.cxx
@@ -297,7 +297,7 @@ const std::vector< const Trk::CylinderLayer* >* InDet::SiLayerBuilder::cylindric
        const Trk::Surface* moduleSurface = takeIt ? (&((*sidetIter)->surface())) : (&(otherSide->surface()));
   
        // register the module surface
-       Trk::SharedObject<const Trk::Surface> sharedSurface(moduleSurface, [](const Trk::Surface*){});
+       Trk::SharedObject<const Trk::Surface> sharedSurface(moduleSurface, Trk::do_not_delete<const Trk::Surface>);
   
        Trk::SurfaceOrderPosition surfaceOrder(sharedSurface, orderPosition);
        if (takeIt) (layerSurfaces[currentlayer]).push_back(surfaceOrder);
diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/TRT_LayerBuilder.cxx b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/TRT_LayerBuilder.cxx
index 5072915384a803c943184cb4cb3185771c44cd58..cd1269763638f11dd13ecd4f339d3e996bda77bd 100755
--- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/TRT_LayerBuilder.cxx
+++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/TRT_LayerBuilder.cxx
@@ -364,7 +364,7 @@ const std::vector< const Trk::CylinderLayer* >* InDet::TRT_LayerBuilder::cylindr
                         * The above line was using the nodel (not delete option for the old shared object
                         * now that SharedObject is a shared_ptr typeded do the same with empty deleter
                         */
-                       Trk::SharedObject<const Trk::Surface> sharedSurface(currentStraw, [](const Trk::Surface*){});
+                       Trk::SharedObject<const Trk::Surface> sharedSurface(currentStraw, Trk::do_not_delete<const Trk::Surface>);
                        strawsPerPhiSecLayer.push_back(Trk::SurfaceOrderPosition(sharedSurface, strawOrderPos));
                        // and record
                        ++sectorStraws;
diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilder.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilder.cxx
index 2b0b2a62de318cf80827180d54fa3323fe24904c..790575ad092b8c06df4573128bbe6847d5c26336 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilder.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonTrackingGeometryBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -1237,7 +1237,7 @@ const Trk::TrackingVolume* Muon::MuonTrackingGeometryBuilder::processVolume(cons
   /* The above was passing a SharedObject with the ndel == True
    * now that SharedObject is a typeded to std::shared_ptr , pass a no-op deleter
    */
-  subVolumes.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol, [](const Trk::TrackingVolume*){}),
+  subVolumes.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol, Trk::do_not_delete<const Trk::TrackingVolume>),
                                                         Amg::Vector3D(transf*gp)));
        //glue subVolumes
         sVols.push_back(sVol); 
@@ -1497,7 +1497,7 @@ const Trk::TrackingVolume* Muon::MuonTrackingGeometryBuilder::processVolume(cons
 	  Amg::Vector3D gp(0.5*(hSteps[h].second+hSteps[h+1].second),0.,0.);
 	  subVolumesVect.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol),
 	                                                       Amg::Vector3D((*transf)*gp)));
-	  hSubsTr.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol, [](const Trk::TrackingVolume*){}),
+	  hSubsTr.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol, Trk::do_not_delete<const Trk::TrackingVolume>),
 	                                                       Amg::Vector3D((*transf)*gp)));
 	  hSubs.push_back(sVol);
 
@@ -1854,7 +1854,7 @@ const Trk::TrackingVolume* Muon::MuonTrackingGeometryBuilder::processShield(cons
       Amg::Vector3D gp(subBds->mediumRadius(),0.,0.);
       subVolumesVect.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol),
 								Amg::Vector3D((*transf)*gp)));
-      hSubsTr.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol, [](const Trk::TrackingVolume*){}),
+      hSubsTr.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const Trk::TrackingVolume>(sVol, Trk::do_not_delete<const Trk::TrackingVolume>),
                                                          Amg::Vector3D((*transf)*gp)));
       hSubs.push_back(sVol);
       
diff --git a/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeArrayCreator.cxx b/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeArrayCreator.cxx
index 02e779bdda8bd2ad8ea042dcea31dfe4ad598793..9988ba6f1c10281102492dda51cf402e015cd0db 100755
--- a/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeArrayCreator.cxx
+++ b/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeArrayCreator.cxx
@@ -115,7 +115,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
         volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter)),
                                                             Amg::Vector3D(currentCylBounds->mediumRadius(), 0.0, 0.0)));
         }else{
-          volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter), [](const TrackingVolume*){}),
+          volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter), do_not_delete<const TrackingVolume>),
                                                               Amg::Vector3D(currentCylBounds->mediumRadius(), 0.0, 0.0)));
      
         }
@@ -198,7 +198,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
                                                               Amg::Vector3D((*volIter)->center())));
         }
         else{
-           volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter),[](const TrackingVolume*){}),
+           volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter),do_not_delete<const TrackingVolume>),
                                                                Amg::Vector3D((*volIter)->center())));
 
         
@@ -245,7 +245,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
         volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter)),
                                                             Amg::Vector3D(((*volIter)->transform())*gp)));
         }else{
-          volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter), [](const TrackingVolume*){}),
+          volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>((*volIter), do_not_delete<const TrackingVolume>),
                                                             Amg::Vector3D(((*volIter)->transform())*gp)));
      
         }
@@ -313,7 +313,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
     if(navtype==false){
 	  volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i]),ngp));
     }else{
-	  volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i],[](const TrackingVolume*){}),ngp));
+	  volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i],do_not_delete<const TrackingVolume>),ngp));
     }
 	  // push back volume position to avoid another loop
 	  volPos.push_back( std::pair< std::pair<double,int>, std::pair<double,double> >
@@ -379,7 +379,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
 	  volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(fullPhiVols[iv]),ngp));
     }
     else{
-	  volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(fullPhiVols[iv],[](const TrackingVolume*){}),ngp));
+	  volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(fullPhiVols[iv],do_not_delete<const TrackingVolume>),ngp));
     }
 	  // push back volume position to avoid another loop
 	  volPos.push_back(std::pair< std::pair<double,int>, std::pair<double,double> >
@@ -474,7 +474,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
       if(navtype==false){
       volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i]),ngp));
       }else{
-      volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i],[](const TrackingVolume*){}),ngp));
+      volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i],do_not_delete<const TrackingVolume>),ngp));
       }
       // push back volume position to avoid another loop
       volPos.push_back(std::pair<double,std::pair<double,double> >(cyl->mediumRadius(),std::pair<double,double>(ngp.phi(),dphi)));
@@ -624,7 +624,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cylinderVolumesArrayI
       if(navtype==false){
         volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i]),ngp));
       }else{
-        volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i], [](const TrackingVolume*){}),ngp));
+        volOrder.push_back(Trk::TrackingVolumeOrderPosition(Trk::SharedObject<const TrackingVolume>(vols[i], do_not_delete<const TrackingVolume>),ngp));
       }
       // push back volume position to avoid another loop
       volPos.push_back(std::pair<float,std::pair<float,float> >(vols[i]->center()[2],std::pair<float,float>(ngp.phi(),dphi)));
@@ -761,7 +761,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::cuboidVolumesArrayNav
         if(navtype==false){
           volOrder.push_back(Trk::SharedObject<const TrackingVolume>((*volIter)));
         }else{
-          volOrder.push_back(Trk::SharedObject<const TrackingVolume>((*volIter), [](const TrackingVolume*){}));
+          volOrder.push_back(Trk::SharedObject<const TrackingVolume>((*volIter), do_not_delete<const TrackingVolume>));
         }
     }
     if (volOrder.size()) {
@@ -795,7 +795,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::trapezoidVolumesArray
           volOrder.push_back(Trk::SharedObject<const TrackingVolume>(*volIter));
         }else
         {
-          volOrder.push_back(Trk::SharedObject<const TrackingVolume>(*volIter,[](const TrackingVolume*){}));
+          volOrder.push_back(Trk::SharedObject<const TrackingVolume>(*volIter,do_not_delete<const TrackingVolume>));
         }
     }
     if (volOrder.size()) {
@@ -829,7 +829,7 @@ Trk::TrackingVolumeArray* Trk::TrackingVolumeArrayCreator::doubleTrapezoidVolume
           volOrder.push_back(Trk::SharedObject<const TrackingVolume>((*volIter)));
         }
         else{
-          volOrder.push_back(Trk::SharedObject<const TrackingVolume>((*volIter),[](const TrackingVolume*){}));
+          volOrder.push_back(Trk::SharedObject<const TrackingVolume>((*volIter),do_not_delete<const TrackingVolume>));
         }
     }
     if (volOrder.size()) {
diff --git a/Tracking/TrkDetDescr/TrkDetDescrUtils/TrkDetDescrUtils/SharedObject.h b/Tracking/TrkDetDescr/TrkDetDescrUtils/TrkDetDescrUtils/SharedObject.h
index 458d61da33e6ae4a25c69034c914628ae427098e..c579508515afda5637c288d100f9988e454a5b7a 100755
--- a/Tracking/TrkDetDescr/TrkDetDescrUtils/TrkDetDescrUtils/SharedObject.h
+++ b/Tracking/TrkDetDescr/TrkDetDescrUtils/TrkDetDescrUtils/SharedObject.h
@@ -23,6 +23,9 @@ namespace Trk {
 template <class T> 
 using SharedObject = std::shared_ptr<T>;  
 
+template<typename T>
+auto do_not_delete = [](T*){};
+
 } // end of namespace
 
 
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/MaterialLayer.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/MaterialLayer.cxx
index 9e4bc65fa3fa410da6339a5c6250f8d9e690b11e..f36c9f516e83877181fa1432a4f26d2f18f89793 100644
--- a/Tracking/TrkDetDescr/TrkGeometry/src/MaterialLayer.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/MaterialLayer.cxx
@@ -22,7 +22,7 @@ Trk::MaterialLayer::MaterialLayer(const Surface& surfaceRepresentation,
   * Probably ownership might need some clean up here 
   */
 m_surfaceRepresentation(SharedObject<const Surface>(&surfaceRepresentation,
-                                                    [](const Surface*) {}))
+                                                    do_not_delete<const Surface>))
 {
     m_layerMaterialProperties.reset(mlprop.clone());
     m_layerThickness = 1.;