Index: XIOS/trunk/src/filter/binary_arithmetic_filter.hpp
===================================================================
--- XIOS/trunk/src/filter/binary_arithmetic_filter.hpp	(revision 1537)
+++ XIOS/trunk/src/filter/binary_arithmetic_filter.hpp	(revision 1542)
@@ -5,4 +5,5 @@
 #include <string>
 #include "operator_expr.hpp"
+#include <unordered_map>
 
 namespace xios
Index: XIOS/trunk/src/filter/data_packet.hpp
===================================================================
--- XIOS/trunk/src/filter/data_packet.hpp	(revision 1537)
+++ XIOS/trunk/src/filter/data_packet.hpp	(revision 1542)
@@ -2,5 +2,5 @@
 #define __XIOS_CDataPacket__
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "array_new.hpp"
@@ -43,6 +43,6 @@
   }; // struct CDataPacket
 
-  typedef boost::shared_ptr<CDataPacket> CDataPacketPtr;
-  typedef boost::shared_ptr<const CDataPacket> CConstDataPacketPtr;
+  typedef std::shared_ptr<CDataPacket> CDataPacketPtr;
+  typedef std::shared_ptr<const CDataPacket> CConstDataPacketPtr;
 } // namespace xios
 
Index: XIOS/trunk/src/filter/output_pin.cpp
===================================================================
--- XIOS/trunk/src/filter/output_pin.cpp	(revision 1537)
+++ XIOS/trunk/src/filter/output_pin.cpp	(revision 1542)
@@ -9,5 +9,5 @@
   { /* Nothing to do */ }
 
-  void COutputPin::connectOutput(boost::shared_ptr<CInputPin> inputPin, size_t inputSlot)
+  void COutputPin::connectOutput(std::shared_ptr<CInputPin> inputPin, size_t inputSlot)
   {
     if (!inputPin)
@@ -42,5 +42,5 @@
             "The packet cannot be null.");
 
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
       it->first->setInput(it->second, packet);
@@ -68,5 +68,5 @@
   bool COutputPin::mustAutoTrigger() const
   {
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
     {
@@ -80,5 +80,5 @@
   void COutputPin::setOutputTriggers()
   {
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
       it->first->setInputTrigger(it->second, this);
@@ -87,5 +87,5 @@
   bool COutputPin::isDataExpected(const CDate& date) const
   {
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
     {
Index: XIOS/trunk/src/filter/output_pin.hpp
===================================================================
--- XIOS/trunk/src/filter/output_pin.hpp	(revision 1537)
+++ XIOS/trunk/src/filter/output_pin.hpp	(revision 1542)
@@ -29,5 +29,5 @@
        * \param inputSlot the input slot number
        */
-      void connectOutput(boost::shared_ptr<CInputPin> inputPin, size_t inputSlot);
+      void connectOutput(std::shared_ptr<CInputPin> inputPin, size_t inputSlot);
 
       /*!
@@ -93,5 +93,5 @@
 
       //!< The list of connected filters and the corresponding slot numbers
-      std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> > outputs;
+      std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> > outputs;
 
       //! Output buffer, store the packets until the output is triggered
Index: XIOS/trunk/src/filter/spatial_transform_filter.cpp
===================================================================
--- XIOS/trunk/src/filter/spatial_transform_filter.cpp	(revision 1537)
+++ XIOS/trunk/src/filter/spatial_transform_filter.cpp	(revision 1542)
@@ -11,13 +11,13 @@
   { /* Nothing to do */ }
 
-  std::pair<boost::shared_ptr<CSpatialTransformFilter>, boost::shared_ptr<CSpatialTransformFilter> >
+  std::pair<std::shared_ptr<CSpatialTransformFilter>, std::shared_ptr<CSpatialTransformFilter> >
   CSpatialTransformFilter::buildFilterGraph(CGarbageCollector& gc, CGrid* srcGrid, CGrid* destGrid, bool hasMissingValue, double missingValue)
   {
     if (!srcGrid || !destGrid)
-      ERROR("std::pair<boost::shared_ptr<CSpatialTransformFilter>, boost::shared_ptr<CSpatialTransformFilter> >"
+      ERROR("std::pair<std::shared_ptr<CSpatialTransformFilter>, std::shared_ptr<CSpatialTransformFilter> >"
             "buildFilterGraph(CGarbageCollector& gc, CGrid* srcGrid, CGrid* destGrid)",
             "Impossible to build the filter graph if either the source or the destination grid are null.");
 
-    boost::shared_ptr<CSpatialTransformFilter> firstFilter, lastFilter;
+    std::shared_ptr<CSpatialTransformFilter> firstFilter, lastFilter;
     // Note that this loop goes from the last transformation to the first transformation
     do
@@ -36,7 +36,7 @@
       for (it=algoList.begin();it!=algoList.end();++it)  if (it->second.first == TRANS_TEMPORAL_SPLITTING) isSpatialTemporal=true ;
 
-      boost::shared_ptr<CSpatialTransformFilter> filter ;
-      if( isSpatialTemporal) filter = boost::shared_ptr<CSpatialTransformFilter>(new CSpatialTemporalFilter(gc, engine, gridTransformation, defaultValue, inputCount));
-      else filter = boost::shared_ptr<CSpatialTransformFilter>(new CSpatialTransformFilter(gc, engine, defaultValue, inputCount));
+      std::shared_ptr<CSpatialTransformFilter> filter ;
+      if( isSpatialTemporal) filter = std::shared_ptr<CSpatialTransformFilter>(new CSpatialTemporalFilter(gc, engine, gridTransformation, defaultValue, inputCount));
+      else filter = std::shared_ptr<CSpatialTransformFilter>(new CSpatialTransformFilter(gc, engine, defaultValue, inputCount));
 
       
@@ -140,5 +140,5 @@
   }
 
-  std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > CSpatialTransformFilterEngine::engines;
+  std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > CSpatialTransformFilterEngine::engines;
 
   CSpatialTransformFilterEngine* CSpatialTransformFilterEngine::get(CGridTransformation* gridTransformation)
@@ -148,8 +148,8 @@
             "Impossible to get the requested engine, the grid transformation is invalid.");
 
-    std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines.find(gridTransformation);
+    std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines.find(gridTransformation);
     if (it == engines.end())
     {
-      boost::shared_ptr<CSpatialTransformFilterEngine> engine(new CSpatialTransformFilterEngine(gridTransformation));
+      std::shared_ptr<CSpatialTransformFilterEngine> engine(new CSpatialTransformFilterEngine(gridTransformation));
       it = engines.insert(std::make_pair(gridTransformation, engine)).first;
     }
Index: XIOS/trunk/src/filter/spatial_transform_filter.hpp
===================================================================
--- XIOS/trunk/src/filter/spatial_transform_filter.hpp	(revision 1537)
+++ XIOS/trunk/src/filter/spatial_transform_filter.hpp	(revision 1542)
@@ -36,5 +36,5 @@
        * \return the first and the last filters of the filter graph
        */
-      static std::pair<boost::shared_ptr<CSpatialTransformFilter>, boost::shared_ptr<CSpatialTransformFilter> >
+      static std::pair<std::shared_ptr<CSpatialTransformFilter>, std::shared_ptr<CSpatialTransformFilter> >
       buildFilterGraph(CGarbageCollector& gc, CGrid* srcGrid, CGrid* destGrid, bool hasMissingValue, double defaultValue);
 
@@ -141,5 +141,5 @@
 
       //! The allocated engines
-      static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > engines;
+      static std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > engines;
   }; // class CSpatialTransformFilterEngine
 } // namespace xios
