← Back to team overview

kicad-developers team mailing list archive

[PATCH 5/5] Replace boost::shared_ptr with std::shared_ptr

 

This is a simple 1:1 replacement for all cases where shared_ptr is not used
to point at an array (array handling is not in C++11).
---
 3d-viewer/3d_mesh_model.h              |  4 ++--
 common/gal/opengl/opengl_gal.cpp       |  2 +-
 common/geometry/hetriang.cpp           | 34 +++++++++++++++++-----------------
 eeschema/class_libentry.h              |  7 +++----
 eeschema/sch_component.h               |  5 ++---
 include/gal/cairo/cairo_gal.h          |  5 +++--
 include/gal/opengl/opengl_gal.h        |  4 ++--
 include/gal/opengl/vertex_manager.h    |  6 +++---
 include/painter.h                      |  2 +-
 include/ttl/halfedge/hetriang.h        |  9 ++++-----
 pcbnew/class_board_connected_item.h    |  2 +-
 pcbnew/class_netclass.cpp              |  6 ++----
 pcbnew/class_netclass.h                |  5 +++--
 pcbnew/dialogs/dialog_design_rules.cpp |  4 +---
 pcbnew/drc_stuff.h                     |  4 ++--
 pcbnew/legacy_plugin.cpp               |  4 +---
 pcbnew/legacy_plugin.h                 |  4 +++-
 pcbnew/pcb_painter.h                   |  3 ++-
 pcbnew/pcb_parser.cpp                  |  4 +---
 pcbnew/ratsnest_data.cpp               | 13 ++++++-------
 pcbnew/ratsnest_data.h                 |  4 ++--
 pcbnew/router/pns_optimizer.h          |  2 +-
 pcbnew/specctra.h                      |  5 +++--
 pcbnew/tools/edit_points.h             |  9 +++++----
 pcbnew/tools/point_editor.cpp          |  5 ++---
 pcbnew/tools/point_editor.h            |  9 +++++----
 pcbnew/tools/selection_tool.cpp        |  2 +-
 27 files changed, 79 insertions(+), 84 deletions(-)

diff --git a/3d-viewer/3d_mesh_model.h b/3d-viewer/3d_mesh_model.h
index 734789f..bc35e43 100644
--- a/3d-viewer/3d_mesh_model.h
+++ b/3d-viewer/3d_mesh_model.h
@@ -31,7 +31,6 @@
 #define __3D_MESH_MODEL_H__
 
 #include <memory>
-#include <boost/shared_ptr.hpp>
 #include <vector>
 #define GLM_FORCE_RADIANS
 #include <glm/glm.hpp>
@@ -39,10 +38,11 @@
 #include "3d_material.h"
 #include "3d_rendering/3d_render_raytracing/shapes3D/cbbox.h"
 
+
 class S3D_MESH;
 
 /** A smart pointer to an S3D_MESH object */
-typedef boost::shared_ptr<S3D_MESH> S3D_MESH_PTR;
+typedef std::shared_ptr<S3D_MESH> S3D_MESH_PTR;
 
 /** A container of smar S3D_MESH object pointers */
 typedef std::vector<S3D_MESH_PTR> S3D_MESH_PTRS;
diff --git a/common/gal/opengl/opengl_gal.cpp b/common/gal/opengl/opengl_gal.cpp
index 998a4a3..ef1a46a 100644
--- a/common/gal/opengl/opengl_gal.cpp
+++ b/common/gal/opengl/opengl_gal.cpp
@@ -1048,7 +1048,7 @@ int OPENGL_GAL::BeginGroup()
 {
     isGrouping = true;
 
-    boost::shared_ptr<VERTEX_ITEM> newItem( new VERTEX_ITEM( *cachedManager ) );
+    std::shared_ptr<VERTEX_ITEM> newItem = std::make_shared<VERTEX_ITEM>( *cachedManager );
     int groupNumber = getNewGroupNumber();
     groups.insert( std::make_pair( groupNumber, newItem ) );
 
diff --git a/common/geometry/hetriang.cpp b/common/geometry/hetriang.cpp
index e5cf26c..8383a8e 100644
--- a/common/geometry/hetriang.cpp
+++ b/common/geometry/hetriang.cpp
@@ -46,8 +46,8 @@
 #include <fstream>
 #include <limits>
 #include <boost/foreach.hpp>
-#include <boost/make_shared.hpp>
 #include <class_board_connected_item.h>
+#include <memory>
 
 using namespace hed;
 
@@ -127,22 +127,22 @@ EDGE_PTR TRIANGULATION::InitTwoEnclosingTriangles( NODES_CONTAINER::iterator aFi
     double dx = ( xmax - xmin ) / fac;
     double dy = ( ymax - ymin ) / fac;
 
-    NODE_PTR n1 = boost::make_shared<NODE>( xmin - dx, ymin - dy );
-    NODE_PTR n2 = boost::make_shared<NODE>( xmax + dx, ymin - dy );
-    NODE_PTR n3 = boost::make_shared<NODE>( xmax + dx, ymax + dy );
-    NODE_PTR n4 = boost::make_shared<NODE>( xmin - dx, ymax + dy );
+    NODE_PTR n1 = std::make_shared<NODE>( xmin - dx, ymin - dy );
+    NODE_PTR n2 = std::make_shared<NODE>( xmax + dx, ymin - dy );
+    NODE_PTR n3 = std::make_shared<NODE>( xmax + dx, ymax + dy );
+    NODE_PTR n4 = std::make_shared<NODE>( xmin - dx, ymax + dy );
 
     // diagonal
-    EDGE_PTR e1d = boost::make_shared<EDGE>();
-    EDGE_PTR e2d = boost::make_shared<EDGE>();
+    EDGE_PTR e1d = std::make_shared<EDGE>();
+    EDGE_PTR e2d = std::make_shared<EDGE>();
 
     // lower triangle
-    EDGE_PTR e11 = boost::make_shared<EDGE>();
-    EDGE_PTR e12 = boost::make_shared<EDGE>();
+    EDGE_PTR e11 = std::make_shared<EDGE>();
+    EDGE_PTR e12 = std::make_shared<EDGE>();
 
     // upper triangle
-    EDGE_PTR e21 = boost::make_shared<EDGE>();
-    EDGE_PTR e22 = boost::make_shared<EDGE>();
+    EDGE_PTR e21 = std::make_shared<EDGE>();
+    EDGE_PTR e22 = std::make_shared<EDGE>();
 
     // lower triangle
     e1d->SetSourceNode( n3 );
@@ -453,12 +453,12 @@ EDGE_PTR TRIANGULATION::SplitTriangle( EDGE_PTR& aEdge, const NODE_PTR& aPoint )
     EDGE_PTR e3( e2->GetNextEdgeInFace() );
     NODE_PTR n3( e3->GetSourceNode() );
 
-    EDGE_PTR e1_n = boost::make_shared<EDGE>();
-    EDGE_PTR e11_n = boost::make_shared<EDGE>();
-    EDGE_PTR e2_n = boost::make_shared<EDGE>();
-    EDGE_PTR e22_n = boost::make_shared<EDGE>();
-    EDGE_PTR e3_n = boost::make_shared<EDGE>();
-    EDGE_PTR e33_n = boost::make_shared<EDGE>();
+    EDGE_PTR e1_n = std::make_shared<EDGE>();
+    EDGE_PTR e11_n = std::make_shared<EDGE>();
+    EDGE_PTR e2_n = std::make_shared<EDGE>();
+    EDGE_PTR e22_n = std::make_shared<EDGE>();
+    EDGE_PTR e3_n = std::make_shared<EDGE>();
+    EDGE_PTR e33_n = std::make_shared<EDGE>();
 
     e1_n->SetSourceNode( n1 );
     e11_n->SetSourceNode( aPoint );
diff --git a/eeschema/class_libentry.h b/eeschema/class_libentry.h
index 25fb9eb..24ea806 100644
--- a/eeschema/class_libentry.h
+++ b/eeschema/class_libentry.h
@@ -33,9 +33,8 @@
 #include <general.h>
 #include <lib_draw_item.h>
 #include <lib_field.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
 #include <vector>
+#include <memory>
 
 class LINE_READER;
 class OUTPUTFORMATTER;
@@ -46,8 +45,8 @@ class LIB_FIELD;
 
 
 typedef std::vector<LIB_ALIAS*>         LIB_ALIASES;
-typedef boost::shared_ptr<LIB_PART>     PART_SPTR;      ///< shared pointer to LIB_PART
-typedef boost::weak_ptr<LIB_PART>       PART_REF;       ///< weak pointer to LIB_PART
+typedef std::shared_ptr<LIB_PART>       PART_SPTR;      ///< shared pointer to LIB_PART
+typedef std::weak_ptr<LIB_PART>         PART_REF;       ///< weak pointer to LIB_PART
 
 
 /* values for member .m_options */
diff --git a/eeschema/sch_component.h b/eeschema/sch_component.h
index 7d64546..5094afc 100644
--- a/eeschema/sch_component.h
+++ b/eeschema/sch_component.h
@@ -36,7 +36,6 @@
 #include <sch_field.h>
 #include <transform.h>
 #include <general.h>
-#include <boost/weak_ptr.hpp>
 #include <vector>
 #include <lib_draw_item.h>
 
@@ -51,9 +50,9 @@ class SCH_COLLECTOR;
 
 
 /// A container for several SCH_FIELD items
-typedef std::vector<SCH_FIELD>      SCH_FIELDS;
+typedef std::vector<SCH_FIELD>    SCH_FIELDS;
 
-typedef boost::weak_ptr<LIB_PART>   PART_REF;
+typedef std::weak_ptr<LIB_PART>   PART_REF;
 
 
 /**
diff --git a/include/gal/cairo/cairo_gal.h b/include/gal/cairo/cairo_gal.h
index bc378d4..c0d42f7 100644
--- a/include/gal/cairo/cairo_gal.h
+++ b/include/gal/cairo/cairo_gal.h
@@ -33,9 +33,10 @@
 #include <cairo.h>
 
 #include <gal/graphics_abstraction_layer.h>
-#include <boost/smart_ptr/shared_ptr.hpp>
 #include <wx/dcbuffer.h>
 
+#include <memory>
+
 #if defined(__WXMSW__)
 #define SCREEN_DEPTH 24
 #else
@@ -274,7 +275,7 @@ private:
     typedef GAL super;
 
     // Compositing variables
-    boost::shared_ptr<CAIRO_COMPOSITOR> compositor; ///< Object for layers compositing
+    std::shared_ptr<CAIRO_COMPOSITOR> compositor;   ///< Object for layers compositing
     unsigned int            mainBuffer;             ///< Handle to the main buffer
     unsigned int            overlayBuffer;          ///< Handle to the overlay buffer
     RENDER_TARGET           currentTarget;          ///< Current rendering target
diff --git a/include/gal/opengl/opengl_gal.h b/include/gal/opengl/opengl_gal.h
index 8e218c7..2bf1ba1 100644
--- a/include/gal/opengl/opengl_gal.h
+++ b/include/gal/opengl/opengl_gal.h
@@ -41,8 +41,8 @@
 #include <wx/glcanvas.h>
 
 #include <map>
-#include <boost/smart_ptr/shared_ptr.hpp>
 #include <boost/smart_ptr/shared_array.hpp>
+#include <memory>
 
 #ifndef CALLBACK
 #define CALLBACK
@@ -282,7 +282,7 @@ private:
     static GLuint fontTexture;                  ///< Bitmap font texture handle (shared)
 
     // Vertex buffer objects related fields
-    typedef std::map< unsigned int, boost::shared_ptr<VERTEX_ITEM> > GROUPS_MAP;
+    typedef std::map< unsigned int, std::shared_ptr<VERTEX_ITEM> > GROUPS_MAP;
     GROUPS_MAP              groups;                 ///< Stores informations about VBO objects (groups)
     unsigned int            groupCounter;           ///< Counter used for generating keys for groups
     VERTEX_MANAGER*         currentManager;         ///< Currently used VERTEX_MANAGER (for storing VERTEX_ITEMs)
diff --git a/include/gal/opengl/vertex_manager.h b/include/gal/opengl/vertex_manager.h
index f2d4fe5..09c089b 100644
--- a/include/gal/opengl/vertex_manager.h
+++ b/include/gal/opengl/vertex_manager.h
@@ -37,7 +37,7 @@
 #include <gal/opengl/vertex_common.h>
 #include <gal/color4d.h>
 #include <stack>
-#include <boost/smart_ptr/shared_ptr.hpp>
+#include <memory>
 #include <wx/log.h>
 
 namespace KIGFX
@@ -349,9 +349,9 @@ protected:
     void putVertex( VERTEX& aTarget, GLfloat aX, GLfloat aY, GLfloat aZ ) const;
 
     /// Container for vertices, may be cached or noncached
-    boost::shared_ptr<VERTEX_CONTAINER> m_container;
+    std::shared_ptr<VERTEX_CONTAINER> m_container;
     /// GPU manager for data transfers and drawing operations
-    boost::shared_ptr<GPU_MANAGER>      m_gpu;
+    std::shared_ptr<GPU_MANAGER>      m_gpu;
 
     /// State machine variables
     /// True in case there is no need to transform vertices
diff --git a/include/painter.h b/include/painter.h
index 727533c..cf586fa 100644
--- a/include/painter.h
+++ b/include/painter.h
@@ -33,7 +33,7 @@
 #include <gal/color4d.h>
 #include <colors.h>
 #include <worksheet_shape_builder.h>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 class EDA_ITEM;
 class COLORS_DESIGN_SETTINGS;
diff --git a/include/ttl/halfedge/hetriang.h b/include/ttl/halfedge/hetriang.h
index 1642e92..c29dfd2 100644
--- a/include/ttl/halfedge/hetriang.h
+++ b/include/ttl/halfedge/hetriang.h
@@ -50,8 +50,7 @@
 #include <iostream>
 #include <fstream>
 #include <ttl/ttl_util.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
+#include <memory>
 #include <layers_id_colors_and_visibility.h>
 
 class BOARD_CONNECTED_ITEM;
@@ -69,9 +68,9 @@ namespace hed
 // Helper typedefs
 class NODE;
 class EDGE;
-typedef boost::shared_ptr<NODE> NODE_PTR;
-typedef boost::shared_ptr<EDGE> EDGE_PTR;
-typedef boost::weak_ptr<EDGE> EDGE_WEAK_PTR;
+typedef std::shared_ptr<NODE> NODE_PTR;
+typedef std::shared_ptr<EDGE> EDGE_PTR;
+typedef std::weak_ptr<EDGE> EDGE_WEAK_PTR;
 typedef std::vector<NODE_PTR> NODES_CONTAINER;
 
 /**
diff --git a/pcbnew/class_board_connected_item.h b/pcbnew/class_board_connected_item.h
index fea4554..2fa293d 100644
--- a/pcbnew/class_board_connected_item.h
+++ b/pcbnew/class_board_connected_item.h
@@ -171,7 +171,7 @@ public:
       * Function GetNetClass
       * returns the NETCLASS for this item.
       */
-     boost::shared_ptr<NETCLASS> GetNetClass() const;
+    std::shared_ptr<NETCLASS> GetNetClass() const;
 
     /**
      * Function GetNetClassName
diff --git a/pcbnew/class_netclass.cpp b/pcbnew/class_netclass.cpp
index 26754f2..46bc606 100644
--- a/pcbnew/class_netclass.cpp
+++ b/pcbnew/class_netclass.cpp
@@ -23,8 +23,6 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  */
 
-#include <boost/make_shared.hpp>
-
 #include <fctsys.h>
 #include <common.h>
 #include <kicad_string.h>
@@ -81,7 +79,7 @@ NETCLASS::~NETCLASS()
 
 NETCLASSES::NETCLASSES()
 {
-    m_Default = boost::make_shared<NETCLASS>( NETCLASS::Default );
+    m_Default = std::make_shared<NETCLASS>( NETCLASS::Default );
 }
 
 
@@ -125,7 +123,7 @@ NETCLASSPTR NETCLASSES::Remove( const wxString& aNetName )
 
     if( found != m_NetClasses.end() )
     {
-        boost::shared_ptr<NETCLASS> netclass = found->second;
+        std::shared_ptr<NETCLASS> netclass = found->second;
         m_NetClasses.erase( found );
         return netclass;
     }
diff --git a/pcbnew/class_netclass.h b/pcbnew/class_netclass.h
index 5b6bbe1..658f182 100644
--- a/pcbnew/class_netclass.h
+++ b/pcbnew/class_netclass.h
@@ -33,12 +33,13 @@
 
 #include <set>
 #include <map>
-#include <boost/shared_ptr.hpp>
 
 #include <wx/string.h>
 
 #include <richio.h>
 
+#include <memory>
+
 
 class LINE_READER;
 class BOARD;
@@ -206,7 +207,7 @@ public:
 #endif
 };
 
-typedef boost::shared_ptr<NETCLASS> NETCLASSPTR;
+typedef std::shared_ptr<NETCLASS> NETCLASSPTR;
 
 /**
  * Class NETCLASSES
diff --git a/pcbnew/dialogs/dialog_design_rules.cpp b/pcbnew/dialogs/dialog_design_rules.cpp
index 20a5643..8e72732 100644
--- a/pcbnew/dialogs/dialog_design_rules.cpp
+++ b/pcbnew/dialogs/dialog_design_rules.cpp
@@ -47,8 +47,6 @@
 #include <wx/generic/gridctrl.h>
 #include <dialog_design_rules_aux_helper_class.h>
 
-#include <boost/make_shared.hpp>
-
 // Column labels for net lists
 #define NET_TITLE       _( "Net" )
 #define CLASS_TITLE     _( "Class" )
@@ -505,7 +503,7 @@ void DIALOG_DESIGN_RULES::CopyRulesListToBoard()
     // Copy other NetClasses :
     for( int row = 1; row < m_grid->GetNumberRows();  ++row )
     {
-        NETCLASSPTR nc = boost::make_shared<NETCLASS>( m_grid->GetRowLabelValue( row ) );
+        NETCLASSPTR nc = std::make_shared<NETCLASS>( m_grid->GetRowLabelValue( row ) );
 
         if( !m_BrdSettings->m_NetClasses.Add( nc ) )
         {
diff --git a/pcbnew/drc_stuff.h b/pcbnew/drc_stuff.h
index b35c9b9..492f314 100644
--- a/pcbnew/drc_stuff.h
+++ b/pcbnew/drc_stuff.h
@@ -30,7 +30,7 @@
 #define _DRC_STUFF_H
 
 #include <vector>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #define OK_DRC  0
 #define BAD_DRC 1
@@ -289,7 +289,7 @@ private:
 
     //-----<single "item" tests>-----------------------------------------
 
-    bool doNetClass( boost::shared_ptr<NETCLASS> aNetClass, wxString& msg );
+    bool doNetClass( std::shared_ptr<NETCLASS> aNetClass, wxString& msg );
 
     /**
      * Function doPadToPadsDrc
diff --git a/pcbnew/legacy_plugin.cpp b/pcbnew/legacy_plugin.cpp
index b95081f..e277619 100644
--- a/pcbnew/legacy_plugin.cpp
+++ b/pcbnew/legacy_plugin.cpp
@@ -87,8 +87,6 @@
 #include <trigo.h>
 #include <build_version.h>
 
-#include <boost/make_shared.hpp>
-
 
 typedef LEGACY_PLUGIN::BIU      BIU;
 
@@ -2408,7 +2406,7 @@ void LEGACY_PLUGIN::loadNETCLASS()
     // yet since that would bypass duplicate netclass name checking within the BOARD.
     // store it temporarily in an unique_ptr until successfully inserted into the BOARD
     // just before returning.
-    NETCLASSPTR nc = boost::make_shared<NETCLASS>( wxEmptyString );
+    NETCLASSPTR nc = std::make_shared<NETCLASS>( wxEmptyString );
 
     while( ( line = READLINE( m_reader ) ) != NULL )
     {
diff --git a/pcbnew/legacy_plugin.h b/pcbnew/legacy_plugin.h
index ddf5971..a1c21d0 100644
--- a/pcbnew/legacy_plugin.h
+++ b/pcbnew/legacy_plugin.h
@@ -26,13 +26,15 @@
  */
 
 #include <io_mgr.h>
-#include <boost/shared_ptr.hpp>
 #include <string>
 #include <layers_id_colors_and_visibility.h>
+#include <memory>
+
 
 // FOOTPRINT_LIBRARY_HEADER_CNT gives the number of characters to compare to detect
 // a footprint library. A few variants may have been used, and so we can only be
 // sure that the header contains "PCBNEW-LibModule-V", not "PCBNEW-LibModule-V1".
+
 #define FOOTPRINT_LIBRARY_HEADER       "PCBNEW-LibModule-V1"
 #define FOOTPRINT_LIBRARY_HEADER_CNT    18
 
diff --git a/pcbnew/pcb_painter.h b/pcbnew/pcb_painter.h
index c6ea211..06f0b8c 100644
--- a/pcbnew/pcb_painter.h
+++ b/pcbnew/pcb_painter.h
@@ -27,9 +27,10 @@
 #define __CLASS_PCB_PAINTER_H
 
 #include <layers_id_colors_and_visibility.h>
-#include <boost/shared_ptr.hpp>
 #include <painter.h>
 
+#include <memory>
+
 
 class EDA_ITEM;
 class COLORS_DESIGN_SETTINGS;
diff --git a/pcbnew/pcb_parser.cpp b/pcbnew/pcb_parser.cpp
index 63e955b..6478f7e 100644
--- a/pcbnew/pcb_parser.cpp
+++ b/pcbnew/pcb_parser.cpp
@@ -51,8 +51,6 @@
 #include <zones.h>
 #include <pcb_parser.h>
 
-#include <boost/make_shared.hpp>
-
 using namespace PCB_KEYS_T;
 
 
@@ -1264,7 +1262,7 @@ void PCB_PARSER::parseNETCLASS() throw( IO_ERROR, PARSE_ERROR )
 
     T token;
 
-    NETCLASSPTR nc = boost::make_shared<NETCLASS>( wxEmptyString );
+    NETCLASSPTR nc = std::make_shared<NETCLASS>( wxEmptyString );
 
     // Read netclass name (can be a name or just a number like track width)
     NeedSYMBOLorNUMBER();
diff --git a/pcbnew/ratsnest_data.cpp b/pcbnew/ratsnest_data.cpp
index 04d379a..e3e716a 100644
--- a/pcbnew/ratsnest_data.cpp
+++ b/pcbnew/ratsnest_data.cpp
@@ -41,7 +41,6 @@
 
 #include <boost/range/adaptor/map.hpp>
 #include <boost/scoped_ptr.hpp>
-#include <boost/make_shared.hpp>
 #include <boost/bind.hpp>
 
 #include <geometry/shape_poly_set.h>
@@ -183,9 +182,9 @@ static std::vector<RN_EDGE_MST_PTR>* kruskalMST( RN_LINKS::RN_EDGE_LIST& aEdges,
                 // Do a copy of edge, but make it RN_EDGE_MST. In contrary to RN_EDGE,
                 // RN_EDGE_MST saves both source and target node and does not require any other
                 // edges to exist for getting source/target nodes
-                RN_EDGE_MST_PTR newEdge = boost::make_shared<RN_EDGE_MST>( dt->GetSourceNode(),
-                                                                           dt->GetTargetNode(),
-                                                                           dt->GetWeight() );
+                RN_EDGE_MST_PTR newEdge = std::make_shared<RN_EDGE_MST>( dt->GetSourceNode(),
+                                                                         dt->GetTargetNode(),
+                                                                         dt->GetWeight() );
                 mst->push_back( newEdge );
                 ++mstSize;
             }
@@ -293,7 +292,7 @@ const RN_NODE_PTR& RN_LINKS::AddNode( int aX, int aY )
     RN_NODE_SET::iterator node;
     bool wasNewElement;
 
-    boost::tie( node, wasNewElement ) = m_nodes.emplace( boost::make_shared<RN_NODE>( aX, aY ) );
+    boost::tie( node, wasNewElement ) = m_nodes.emplace( std::make_shared<RN_NODE>( aX, aY ) );
 
     return *node;
 }
@@ -316,7 +315,7 @@ RN_EDGE_MST_PTR RN_LINKS::AddConnection( const RN_NODE_PTR& aNode1, const RN_NOD
                                          unsigned int aDistance )
 {
     assert( aNode1 != aNode2 );
-    RN_EDGE_MST_PTR edge = boost::make_shared<RN_EDGE_MST>( aNode1, aNode2, aDistance );
+    RN_EDGE_MST_PTR edge = std::make_shared<RN_EDGE_MST>( aNode1, aNode2, aDistance );
     m_edges.push_back( edge );
 
     return edge;
@@ -339,7 +338,7 @@ void RN_NET::compute()
             RN_LINKS::RN_NODE_SET::iterator last = ++boardNodes.begin();
 
             // There can be only one possible connection, but it is missing
-            m_rnEdges->push_back( boost::make_shared<RN_EDGE_MST>( *boardNodes.begin(), *last ) );
+            m_rnEdges->push_back( std::make_shared<RN_EDGE_MST>( *boardNodes.begin(), *last ) );
         }
 
         // Set tags to nodes as connected
diff --git a/pcbnew/ratsnest_data.h b/pcbnew/ratsnest_data.h
index ec996ba..9bae8fb 100644
--- a/pcbnew/ratsnest_data.h
+++ b/pcbnew/ratsnest_data.h
@@ -68,7 +68,7 @@ typedef hed::EDGE           RN_EDGE;
 typedef hed::EDGE_PTR       RN_EDGE_PTR;
 typedef hed::EDGE_MST       RN_EDGE_MST;
 typedef hed::TRIANGULATION  TRIANGULATOR;
-typedef boost::shared_ptr<hed::EDGE_MST> RN_EDGE_MST_PTR;
+typedef std::shared_ptr<hed::EDGE_MST> RN_EDGE_MST_PTR;
 
 bool operator==( const RN_NODE_PTR& aFirst, const RN_NODE_PTR& aSecond );
 bool operator!=( const RN_NODE_PTR& aFirst, const RN_NODE_PTR& aSecond );
@@ -576,7 +576,7 @@ protected:
     RN_LINKS m_links;
 
     ///> Vector of edges that makes ratsnest for a given net.
-    boost::shared_ptr< std::vector<RN_EDGE_MST_PTR> > m_rnEdges;
+    std::shared_ptr< std::vector<RN_EDGE_MST_PTR> > m_rnEdges;
 
     ///> List of nodes which will not be used as ratsnest target nodes.
     boost::unordered_set<RN_NODE_PTR> m_blockedNodes;
diff --git a/pcbnew/router/pns_optimizer.h b/pcbnew/router/pns_optimizer.h
index 36bced6..61a0923 100644
--- a/pcbnew/router/pns_optimizer.h
+++ b/pcbnew/router/pns_optimizer.h
@@ -22,7 +22,7 @@
 #define __PNS_OPTIMIZER_H
 
 #include <boost/unordered_map.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include <geometry/shape_index_list.h>
 #include <geometry/shape_line_chain.h>
diff --git a/pcbnew/specctra.h b/pcbnew/specctra.h
index aa072c2..723575e 100644
--- a/pcbnew/specctra.h
+++ b/pcbnew/specctra.h
@@ -31,12 +31,13 @@
 
 //  see http://www.boost.org/libs/ptr_container/doc/ptr_set.html
 #include <boost/ptr_container/ptr_set.hpp>
-#include <boost/shared_ptr.hpp>
 
 #include <fctsys.h>
 #include <specctra_lexer.h>
 #include <pcbnew.h>
 
+#include <memory>
+
 // all outside the DSN namespace:
 class BOARD;
 class TRACK;
@@ -3815,7 +3816,7 @@ class SPECCTRA_DB : public SPECCTRA_LEXER
      * Function exportNETCLASS
      * exports \a aNetClass to the DSN file.
      */
-    void exportNETCLASS( boost::shared_ptr<NETCLASS> aNetClass, BOARD* aBoard );
+    void exportNETCLASS( std::shared_ptr<NETCLASS> aNetClass, BOARD* aBoard );
 
     //-----</FromBOARD>------------------------------------------------------
 
diff --git a/pcbnew/tools/edit_points.h b/pcbnew/tools/edit_points.h
index ca9e373..b1d8166 100644
--- a/pcbnew/tools/edit_points.h
+++ b/pcbnew/tools/edit_points.h
@@ -25,8 +25,6 @@
 #ifndef EDIT_POINTS_H_
 #define EDIT_POINTS_H_
 
-#include <boost/shared_ptr.hpp>
-
 #include <base_struct.h>
 #include <layers_id_colors_and_visibility.h>
 
@@ -35,6 +33,9 @@
 
 #include "edit_constraints.h"
 
+#include <memory>
+
+
 /**
  * Class EDIT_POINT
  *
@@ -173,7 +174,7 @@ private:
     VECTOR2I m_position;
 
     ///> Constraint for the point, NULL if none
-    boost::shared_ptr<EDIT_CONSTRAINT<EDIT_POINT> > m_constraint;
+    std::shared_ptr<EDIT_CONSTRAINT<EDIT_POINT> > m_constraint;
 };
 
 
@@ -291,7 +292,7 @@ private:
     EDIT_POINT& m_end;              ///< End point for a line
 
     ///> Constraint for the point, NULL if none
-    boost::shared_ptr<EDIT_CONSTRAINT<EDIT_LINE> > m_constraint;
+    std::shared_ptr<EDIT_CONSTRAINT<EDIT_LINE> > m_constraint;
 };
 
 
diff --git a/pcbnew/tools/point_editor.cpp b/pcbnew/tools/point_editor.cpp
index d73a90b..839e3db 100644
--- a/pcbnew/tools/point_editor.cpp
+++ b/pcbnew/tools/point_editor.cpp
@@ -22,7 +22,6 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  */
 
-#include <boost/make_shared.hpp>
 #include <boost/bind.hpp>
 
 #include <tool/tool_manager.h>
@@ -70,9 +69,9 @@ enum DIMENSION_POINTS
 class EDIT_POINTS_FACTORY
 {
 public:
-    static boost::shared_ptr<EDIT_POINTS> Make( EDA_ITEM* aItem, KIGFX::GAL* aGal )
+    static std::shared_ptr<EDIT_POINTS> Make( EDA_ITEM* aItem, KIGFX::GAL* aGal )
     {
-        boost::shared_ptr<EDIT_POINTS> points = boost::make_shared<EDIT_POINTS>( aItem );
+        std::shared_ptr<EDIT_POINTS> points = std::make_shared<EDIT_POINTS>( aItem );
 
         // Generate list of edit points basing on the item type
         switch( aItem->Type() )
diff --git a/pcbnew/tools/point_editor.h b/pcbnew/tools/point_editor.h
index fc4c6a0..eb43e1b 100644
--- a/pcbnew/tools/point_editor.h
+++ b/pcbnew/tools/point_editor.h
@@ -25,11 +25,12 @@
 #ifndef __POINT_EDITOR_H
 #define __POINT_EDITOR_H
 
-#include <boost/shared_ptr.hpp>
-
 #include <tool/tool_interactive.h>
 #include "edit_points.h"
 
+#include <memory>
+
+
 class SELECTION_TOOL;
 
 /**
@@ -69,10 +70,10 @@ private:
     EDIT_POINT m_original;
 
     ///> Currently available edit points.
-    boost::shared_ptr<EDIT_POINTS> m_editPoints;
+    std::shared_ptr<EDIT_POINTS> m_editPoints;
 
     // Alternative constraint, enabled while a modifier key is held
-    boost::shared_ptr<EDIT_CONSTRAINT<EDIT_POINT> > m_altConstraint;
+    std::shared_ptr<EDIT_CONSTRAINT<EDIT_POINT> > m_altConstraint;
 
     // EDIT_POINT for alternative constraint mode
     EDIT_POINT m_altConstrainer;
diff --git a/pcbnew/tools/selection_tool.cpp b/pcbnew/tools/selection_tool.cpp
index c548c2f..a5f8202 100644
--- a/pcbnew/tools/selection_tool.cpp
+++ b/pcbnew/tools/selection_tool.cpp
@@ -781,7 +781,7 @@ void SELECTION_TOOL::clearSelection()
 BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
 {
     BOARD_ITEM* current = NULL;
-    boost::shared_ptr<BRIGHT_BOX> brightBox;
+    std::shared_ptr<BRIGHT_BOX> brightBox;
     CONTEXT_MENU menu;
 
     int limit = std::min( 10, aCollector->GetCount() );

Follow ups

References