diff --git a/code/nel/include/nel/3d/animation_set_user.h b/code/nel/include/nel/3d/animation_set_user.h
index b0e863297..d5376f6df 100644
--- a/code/nel/include/nel/3d/animation_set_user.h
+++ b/code/nel/include/nel/3d/animation_set_user.h
@@ -93,7 +93,7 @@ public:
 	uint addAnimation (const char* fileName, const char* animName, bool displayMissingFileWarning  = true)
 	{
 		// Allocate an animation
-		std::auto_ptr<CAnimation> anim (new CAnimation);
+		std::unique_ptr<CAnimation> anim (new CAnimation);
 
 		// Read it
 		NLMISC::CIFile file;
@@ -130,7 +130,7 @@ public:
 	virtual uint addSkeletonWeight (const char* fileName, const char* skelName)
 	{
 		// Allocate an animation
-		std::auto_ptr<CSkeletonWeight> skeletonWeight (new CSkeletonWeight);
+		std::unique_ptr<CSkeletonWeight> skeletonWeight (new CSkeletonWeight);
 
 		// Read it
 		NLMISC::CIFile file;
diff --git a/code/nel/include/nel/3d/material.h b/code/nel/include/nel/3d/material.h
index 671f3339a..f8736b08b 100644
--- a/code/nel/include/nel/3d/material.h
+++ b/code/nel/include/nel/3d/material.h
@@ -692,7 +692,7 @@ private:
 	{
 		NLMISC::CMatrix		TexMat[IDRV_MAT_MAXTEXTURES];
 	};
-	std::auto_ptr<CUserTexMat>	_TexUserMat;		 // user texture matrix
+	std::unique_ptr<CUserTexMat>	_TexUserMat;		 // user texture matrix
 
 public:
 	// Private. For Driver only.
diff --git a/code/nel/include/nel/3d/ps_attrib_maker_bin_op_inline.h b/code/nel/include/nel/3d/ps_attrib_maker_bin_op_inline.h
index 2a9cbff45..2814d8dc0 100644
--- a/code/nel/include/nel/3d/ps_attrib_maker_bin_op_inline.h
+++ b/code/nel/include/nel/3d/ps_attrib_maker_bin_op_inline.h
@@ -282,7 +282,7 @@ inline float CPSAttribMakerBinOp<float>::getMaxValue(void) const
 template <class T>
 inline CPSAttribMakerBinOp<T>::CPSAttribMakerBinOp(const CPSAttribMakerBinOp &other) : CPSAttribMaker<T>(other) // parent copy ctor
 {
-	std::auto_ptr<CPSAttribMaker<T> > a0(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[0]->clone()))
+	std::unique_ptr<CPSAttribMaker<T> > a0(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[0]->clone()))
 									, a1(NLMISC::safe_cast<CPSAttribMaker<T> *>(other._Arg[1]->clone()));
 	this->_Op =		other._Op;
 	this->_Size =   other._Size;
diff --git a/code/nel/include/nel/3d/ps_attrib_maker_helper.h b/code/nel/include/nel/3d/ps_attrib_maker_helper.h
index 10d29fe52..2bd309f55 100644
--- a/code/nel/include/nel/3d/ps_attrib_maker_helper.h
+++ b/code/nel/include/nel/3d/ps_attrib_maker_helper.h
@@ -1463,7 +1463,7 @@ public:
 	CPSAttribMakerMemoryBase(const CPSAttribMakerMemoryBase &src) : CPSAttribMaker<T>(src) // parent copy ctor
 	{
 		nlassert(src._Scheme);
-		std::auto_ptr<CPSAttribMaker<T> > s(NLMISC::safe_cast<CPSAttribMaker<T> *>(src._Scheme->clone()));
+		std::unique_ptr<CPSAttribMaker<T> > s(NLMISC::safe_cast<CPSAttribMaker<T> *>(src._Scheme->clone()));
 		this->_T = src._T;
 		this->_DefaultValue = src._DefaultValue;
 		this->_Scheme = s.release();
diff --git a/code/nel/include/nel/3d/ps_mesh.h b/code/nel/include/nel/3d/ps_mesh.h
index 72ba76f4d..bd9b9e504 100644
--- a/code/nel/include/nel/3d/ps_mesh.h
+++ b/code/nel/include/nel/3d/ps_mesh.h
@@ -590,7 +590,7 @@ protected:
 		void	serial(NLMISC::IStream &f) throw(NLMISC::EStream);
 	};
 
-	typedef std::auto_ptr<CGlobalTexAnims> PGlobalTexAnims;
+	typedef std::unique_ptr<CGlobalTexAnims> PGlobalTexAnims;
 	PGlobalTexAnims						   _GlobalTexAnims;
 	float								   _GlobalAnimDate;
 
diff --git a/code/nel/src/3d/animation.cpp b/code/nel/src/3d/animation.cpp
index b33f337d2..5434c783d 100644
--- a/code/nel/src/3d/animation.cpp
+++ b/code/nel/src/3d/animation.cpp
@@ -318,7 +318,7 @@ UAnimation* UAnimation::createAnimation (const char* sPath)
 	NL3D_HAUTO_UI_ANIMATION;
 
 	// Allocate an animation
-	std::auto_ptr<CAnimation> anim (new CAnimation);
+	std::unique_ptr<CAnimation> anim (new CAnimation);
 
 	// Read it
 	NLMISC::CIFile file;
diff --git a/code/nel/src/3d/animation_set.cpp b/code/nel/src/3d/animation_set.cpp
index 05db8a7be..8048bcd0a 100644
--- a/code/nel/src/3d/animation_set.cpp
+++ b/code/nel/src/3d/animation_set.cpp
@@ -221,7 +221,7 @@ bool CAnimationSet::loadFromFiles(const std::string &path, bool recurse /* = tru
 			{
 				NLMISC::CIFile	iFile;
 				iFile.open(anims[k]);
-				std::auto_ptr<CAnimation> anim(new CAnimation);
+				std::unique_ptr<CAnimation> anim(new CAnimation);
 				anim->serial(iFile);
 				addAnimation(NLMISC::CFile::getFilenameWithoutExtension(anims[k]).c_str(), anim.release());
 				iFile.close();
diff --git a/code/nel/src/3d/cube_map_builder.cpp b/code/nel/src/3d/cube_map_builder.cpp
index 8d8e016b7..ec28cc258 100644
--- a/code/nel/src/3d/cube_map_builder.cpp
+++ b/code/nel/src/3d/cube_map_builder.cpp
@@ -89,8 +89,8 @@ static uint8 *BuildCubeMapTexLuminance(const NLMISC::CVector &start,
 
 CTextureCube *BuildCubeMap(sint mapSize, ICubeMapFunctor &f, bool luminanceOnly /* = false*/, const std::string &shareName /* = "" */)
 {
-	std::auto_ptr<CTextureCube> cubeMap(new CTextureCube);
-	std::auto_ptr<CTextureMem> faces[6];
+	std::unique_ptr<CTextureCube> cubeMap(new CTextureCube);
+	std::unique_ptr<CTextureMem> faces[6];
 
 	/// this gives the start (unormalized normal for each face for u,v = 0, 0)
 	static const NLMISC::CVector start[] =
diff --git a/code/nel/src/3d/material.cpp b/code/nel/src/3d/material.cpp
index 886f45308..f3a0c6e75 100644
--- a/code/nel/src/3d/material.cpp
+++ b/code/nel/src/3d/material.cpp
@@ -105,9 +105,9 @@ CMaterial		&CMaterial::operator=(const CMaterial &mat)
 	// copy texture matrix if there.
 	if (mat._TexUserMat.get())
 	{
-	    std::auto_ptr<CUserTexMat> texMatClone( new CUserTexMat(*(mat._TexUserMat))); // make cpy
+	    std::unique_ptr<CUserTexMat> texMatClone( new CUserTexMat(*(mat._TexUserMat))); // make cpy
 	    //std::swap(texMatClone, _TexUserMat); // swap with old
-	    _TexUserMat = texMatClone;
+		_TexUserMat = std::move(texMatClone);
 	}
 	else
 	{
@@ -265,9 +265,9 @@ void		CMaterial::serial(NLMISC::IStream &f)
 
 		if ((_Flags & IDRV_MAT_USER_TEX_MAT_ALL)) // are there user textrue coordinates matrix ?
 		{
-			std::auto_ptr<CUserTexMat> newPtr(new CUserTexMat); // create new
+			std::unique_ptr<CUserTexMat> newPtr(new CUserTexMat); // create new
 			//std::swap(_TexUserMat, newPtr); // replace old
-			_TexUserMat = newPtr;
+			_TexUserMat = std::move(newPtr);
 		}
 	}
 
diff --git a/code/nel/src/3d/ps_mesh.cpp b/code/nel/src/3d/ps_mesh.cpp
index 25a4d8034..02c859d76 100644
--- a/code/nel/src/3d/ps_mesh.cpp
+++ b/code/nel/src/3d/ps_mesh.cpp
@@ -1533,7 +1533,7 @@ void CPSConstraintMesh::serial(NLMISC::IStream &f) throw(NLMISC::EStream)
 			{
 				PGlobalTexAnims newPtr(new CGlobalTexAnims); // create new
 				//std::swap(_GlobalTexAnims, newPtr);			 // replace old
-				_GlobalTexAnims = newPtr;
+				_GlobalTexAnims = std::move(newPtr);
 				f.serial(*_GlobalTexAnims);
 			}
 
@@ -2352,7 +2352,7 @@ void  CPSConstraintMesh::setTexAnimType(TTexAnimType type)
 		{
 			PGlobalTexAnims newPtr(new CGlobalTexAnims);
 			//std::swap(_GlobalTexAnims, newPtr);
-			_GlobalTexAnims = newPtr;
+			_GlobalTexAnims = std::move(newPtr);
 			_GlobalAnimationEnabled = 1;
 		}
 		break;
diff --git a/code/nel/src/3d/ps_ribbon.cpp b/code/nel/src/3d/ps_ribbon.cpp
index e03693349..87ba44669 100644
--- a/code/nel/src/3d/ps_ribbon.cpp
+++ b/code/nel/src/3d/ps_ribbon.cpp
@@ -36,7 +36,7 @@ CPSRibbon::TVBMap CPSRibbon::_VBMaps[16];
 static ITexture *CreateGradientTexture()
 {
 	NL_PS_FUNC(CreateGradientTexture)
-	std::auto_ptr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W,
+	std::unique_ptr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W,
 												   sizeof(GradientB2W),
 												   false, /* dont delete */
 												   false, /* not a file */
diff --git a/code/nel/src/3d/ps_tail_dot.cpp b/code/nel/src/3d/ps_tail_dot.cpp
index 075c9a598..5e1e25043 100644
--- a/code/nel/src/3d/ps_tail_dot.cpp
+++ b/code/nel/src/3d/ps_tail_dot.cpp
@@ -33,7 +33,7 @@ static NLMISC::CRGBA GradientB2W[] = {NLMISC::CRGBA(0, 0, 0, 0), NLMISC::CRGBA(2
 static ITexture *CreateGradientTexture()
 {
 	NL_PS_FUNC(CreateGradientTexture)
-	std::auto_ptr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W,
+	std::unique_ptr<CTextureMem> tex(new CTextureMem((uint8 *) &GradientB2W,
 												   sizeof(GradientB2W),
 												   false, /* dont delete */
 												   false, /* not a file */
diff --git a/code/nel/src/3d/texture_cube.cpp b/code/nel/src/3d/texture_cube.cpp
index fbcd425f9..47038df78 100644
--- a/code/nel/src/3d/texture_cube.cpp
+++ b/code/nel/src/3d/texture_cube.cpp
@@ -193,7 +193,7 @@ bool CTextureCube::isSelectable() const
 ITexture *CTextureCube::buildNonSelectableVersion(uint index)
 {
 	if (!isSelectable()) return this;
-	std::auto_ptr<CTextureCube> tc(new CTextureCube);
+	std::unique_ptr<CTextureCube> tc(new CTextureCube);
 
 	// copy basic texture parameters
 	(ITexture &) *tc.get() = (ITexture &) *this; // invoke ITexture = op for basics parameters
diff --git a/code/nel/src/misc/inter_window_msg_queue.cpp b/code/nel/src/misc/inter_window_msg_queue.cpp
index cca8f1a37..d63ae1128 100644
--- a/code/nel/src/misc/inter_window_msg_queue.cpp
+++ b/code/nel/src/misc/inter_window_msg_queue.cpp
@@ -268,7 +268,7 @@ namespace NLMISC
 			typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor;
 			// NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794
 			// else, this is one of the way recommended by microsoft to solve the problem.
-			std::auto_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
+			std::unique_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
 			CMsgQueueIdent msgQueueIdent(ownerWindow, localId, foreignId);
 			if (messageQueueMap->value().count(msgQueueIdent))
 			{
@@ -368,7 +368,7 @@ namespace NLMISC
 			typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor;
 			// NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794
 			// else, this is one of the way recommended by microsoft to solve the problem.
-			std::auto_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
+			std::unique_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
 			TMessageQueueMap::iterator it = messageQueueMap->value().find(CMsgQueueIdent(_LocalWindow.getWnd(), _LocalWindow.getId(), _ForeignWindow.getId()));
 			nlassert(it != messageQueueMap->value().end());
 			messageQueueMap->value().erase(it);
@@ -408,7 +408,7 @@ namespace NLMISC
 					typedef CSynchronized<TMessageQueueMap>::CAccessor TAccessor;
 					// NB : use a 'new' instead of an automatic object here, because I got an 'INTERNAL COMPILER ERROR' compiler file 'msc1.cpp', line 1794
 					// else, this is one of the way recommended by microsoft to solve the problem.
-					std::auto_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
+					std::unique_ptr<TAccessor> messageQueueMap(new TAccessor(&_MessageQueueMap));
 					TMessageQueueMap::iterator it = messageQueueMap->value().find(CMsgQueueIdent(hwnd, toId, fromId));
 					if (it != messageQueueMap->value().end())
 					{
diff --git a/code/nel/src/net/module_gateway_transport.cpp b/code/nel/src/net/module_gateway_transport.cpp
index cda4e8e81..dbdd091e6 100644
--- a/code/nel/src/net/module_gateway_transport.cpp
+++ b/code/nel/src/net/module_gateway_transport.cpp
@@ -69,7 +69,7 @@ namespace NLNET
 		friend class CL3ServerRoute;
 	public:
 		/// The callback server that receive connection and dispatch message
-		auto_ptr<CCallbackServer>			_CallbackServer;
+		unique_ptr<CCallbackServer>			_CallbackServer;
 
 		/// A static mapper to retrieve transport from the CCallbackServer pointer
 		typedef map<CCallbackNetBase*, CGatewayL3ServerTransport*>	TDispatcherIndex;
@@ -221,7 +221,7 @@ namespace NLNET
 				throw ETransportError("openServer : The server is already open");
 
 			// create a new callback server
-			auto_ptr<CCallbackServer> cbs = auto_ptr<CCallbackServer> (new CCallbackServer());
+			unique_ptr<CCallbackServer> cbs(new CCallbackServer());
 
 			// register the callbacks
 			cbs->setConnectionCallback(cbConnection, static_cast<IGatewayTransport*>(this));
@@ -231,7 +231,7 @@ namespace NLNET
 			// open the server
 			cbs->init(port);
 
-			_CallbackServer = cbs;
+			_CallbackServer = std::move(cbs);
 
 			// register it in the dispatcher
 			_DispatcherIndex.insert(make_pair(_CallbackServer.get(), this));
@@ -670,7 +670,7 @@ namespace NLNET
 				_FreeRoutesIds.pop_back();
 			}
 
-			auto_ptr<CL3ClientRoute> route = auto_ptr<CL3ClientRoute>(new CL3ClientRoute(this, addr, connId));
+			unique_ptr<CL3ClientRoute> route(new CL3ClientRoute(this, addr, connId));
 
 			// set the callbacks
 			route->CallbackClient.setDisconnectionCallback(cbDisconnection, static_cast<IGatewayTransport*>(this));
diff --git a/code/nel/src/net/module_manager.cpp b/code/nel/src/net/module_manager.cpp
index 0b17738b1..2c32c13a7 100644
--- a/code/nel/src/net/module_manager.cpp
+++ b/code/nel/src/net/module_manager.cpp
@@ -250,7 +250,7 @@ namespace NLNET
 
 			// now, load the library
 			string fullName = NLMISC::CPath::standardizePath(path)+CLibrary::makeLibName(shortName);
-			std::auto_ptr<TModuleLibraryInfo>	mli = auto_ptr<TModuleLibraryInfo>(new TModuleLibraryInfo);
+			std::unique_ptr<TModuleLibraryInfo>	mli(new TModuleLibraryInfo);
 			if (!mli->LibraryHandler.loadLibrary(fullName, false, true, true))
 			{
 				nlwarning("CModuleManager : failed to load the library '%s' in '%s'",
@@ -399,7 +399,7 @@ namespace NLNET
 			IModuleFactory *mf = it->second;
 			// sanity check
 			nlassert(mf->getModuleClassName() == className);
-			std::auto_ptr<IModule> module = auto_ptr<IModule>(mf->createModule());
+			std::unique_ptr<IModule> module(mf->createModule());
 			if (module.get() == NULL)
 			{
 				nlwarning("createModule : factory failed to create a module instance for class '%s'", className.c_str());
@@ -623,7 +623,7 @@ namespace NLNET
 			const std::string &moduleManifest,
 			TModuleId foreignModuleId)
 		{
-			std::auto_ptr<CModuleProxy> modProx = auto_ptr<CModuleProxy>(new CModuleProxy(localModule, ++_LastGeneratedId, moduleClassName, moduleFullyQualifiedName, moduleManifest));
+			std::unique_ptr<CModuleProxy> modProx(new CModuleProxy(localModule, ++_LastGeneratedId, moduleClassName, moduleFullyQualifiedName, moduleManifest));
 			modProx->_Gateway = gateway;
 			modProx->_Route = route;
 			modProx->_Distance = distance;
diff --git a/code/nel/src/pacs/primitive_block_pacs.cpp b/code/nel/src/pacs/primitive_block_pacs.cpp
index 1ee0615ea..39a91a214 100644
--- a/code/nel/src/pacs/primitive_block_pacs.cpp
+++ b/code/nel/src/pacs/primitive_block_pacs.cpp
@@ -103,7 +103,7 @@ UPrimitiveBlock *UPrimitiveBlock::createPrimitiveBlock(NLMISC::IStream &src)
 {
 
 	nlassert(src.isReading());
-	std::auto_ptr<CPrimitiveBlock> pb(new CPrimitiveBlock);
+	std::unique_ptr<CPrimitiveBlock> pb(new CPrimitiveBlock);
 	pb->serial(src);
 	return pb.release();
 }
diff --git a/code/nel/tools/3d/object_viewer/dup_ps.cpp b/code/nel/tools/3d/object_viewer/dup_ps.cpp
index 11896b8dd..537de77af 100644
--- a/code/nel/tools/3d/object_viewer/dup_ps.cpp
+++ b/code/nel/tools/3d/object_viewer/dup_ps.cpp
@@ -67,7 +67,7 @@ struct CDupObjPolicy
 		dest.serialPtr(obj);
 		/*if (dest.isReading())
 		{
-			std::auto_ptr<T> newObj(new T);
+			std::unique_ptr<T> newObj(new T);
 			newObj->serialPtr(dest);
 			delete obj;
 			obj = newObj.release();
@@ -112,7 +112,7 @@ NL3D::CParticleSystemProcess	*DupPSLocated(const CParticleSystemProcess *in)
 			/** Duplicate the system, and detach.
 			  * We can't duplicate the object direclty (it may be referencing other objects in the system, so these objects will be copied too...)
 			  */
-			 std::auto_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(in->getOwner()));	
+			 std::unique_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(in->getOwner()));
 			 // scene pointer is not serialised, but 'detach' may need the scene to be specified
 			 newPS->setScene(in->getOwner()->getScene());
 			return newPS->detach(index);			
@@ -142,7 +142,7 @@ NL3D::CPSLocatedBindable	*DupPSLocatedBindable(CPSLocatedBindable *in)
 		else
 		{
 			CParticleSystem *srcPS = in->getOwner()->getOwner();
-			std::auto_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(srcPS));	
+			std::unique_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(srcPS));
 			// scene pointer is not serialised, but 'detach' may need the scene to be specified
 			newPS->setScene(in->getOwner()->getOwner()->getScene());
 			//
diff --git a/code/nel/tools/3d/object_viewer/object_viewer.cpp b/code/nel/tools/3d/object_viewer/object_viewer.cpp
index 00d530dd6..b5d5f7109 100644
--- a/code/nel/tools/3d/object_viewer/object_viewer.cpp
+++ b/code/nel/tools/3d/object_viewer/object_viewer.cpp
@@ -469,7 +469,7 @@ void CObjectViewer::loadConfigFile()
 		try
 		{
 			CConfigFile::CVar &var = cf.getVar("automatic_animation_path");
-			std::auto_ptr<CAnimationSet> as(new CAnimationSet);
+			std::unique_ptr<CAnimationSet> as(new CAnimationSet);
 			//
 			bool loadingOk = as->loadFromFiles(var.asString(),true ,"anim",true);	
 			//
diff --git a/code/nel/tools/3d/object_viewer/particle_dlg.cpp b/code/nel/tools/3d/object_viewer/particle_dlg.cpp
index 8a886aa1f..4fd9f359d 100644
--- a/code/nel/tools/3d/object_viewer/particle_dlg.cpp
+++ b/code/nel/tools/3d/object_viewer/particle_dlg.cpp
@@ -574,7 +574,7 @@ void CParticleDlg::OnLoadPSWorkspace()
 void CParticleDlg::loadWorkspace(const std::string &fullPath)
 {
 	// Add to the path
-	std::auto_ptr<CParticleWorkspace> newPW(new CParticleWorkspace);
+	std::unique_ptr<CParticleWorkspace> newPW(new CParticleWorkspace);
 	newPW->init(_ObjView, fullPath, _ObjView->getFontManager(), _ObjView->getFontGenerator());
 	newPW->setModificationCallback(ParticleTreeCtrl);
 	// save empty workspace
diff --git a/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp b/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp
index 803f7548a..973278a89 100644
--- a/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp
+++ b/code/nel/tools/3d/object_viewer/particle_tree_ctrl.cpp
@@ -1006,7 +1006,7 @@ BOOL CParticleTreeCtrl::OnCmdMsg(UINT nID,  int nCode,  void* pExtra,  AFX_CMDHA
 				// Add search path for the texture
 				NLMISC::CPath::addSearchPath (NLMISC::CFile::getPath(tStrToUtf8(fd.GetPathName())));
 
-				std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
+				std::unique_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
 				CParticleSystemModel *psm  = NULL;
 				try
 				{					
diff --git a/code/nel/tools/3d/object_viewer/particle_tree_ctrl.h b/code/nel/tools/3d/object_viewer/particle_tree_ctrl.h
index fa3cafd1f..9f699938c 100644
--- a/code/nel/tools/3d/object_viewer/particle_tree_ctrl.h
+++ b/code/nel/tools/3d/object_viewer/particle_tree_ctrl.h
@@ -182,8 +182,8 @@ private:
 	// Matching infos for each nodes in the CTreeCtrl
 	std::vector<CNodeType *> _NodeTypes;
 	//
-	std::auto_ptr<NL3D::CPSLocated>			_LocatedCopy;
-	std::auto_ptr<NL3D::CPSLocatedBindable> _LocatedBindableCopy;
+	std::unique_ptr<NL3D::CPSLocated>			_LocatedCopy;
+	std::unique_ptr<NL3D::CPSLocatedBindable>	_LocatedBindableCopy;
 	//
 	DECLARE_MESSAGE_MAP()
 	// from CParticleWorkspace::IModificationCallback
diff --git a/code/nel/tools/3d/object_viewer/particle_workspace.cpp b/code/nel/tools/3d/object_viewer/particle_workspace.cpp
index 5c62dcb0d..89fb31991 100644
--- a/code/nel/tools/3d/object_viewer/particle_workspace.cpp
+++ b/code/nel/tools/3d/object_viewer/particle_workspace.cpp
@@ -202,7 +202,7 @@ void CParticleWorkspace::CNode::createEmptyPS()
 	NL3D::CParticleSystem emptyPS;	
 	NL3D::CParticleSystemShape *pss = new NL3D::CParticleSystemShape;
 	pss->buildFromPS(emptyPS);	
-	std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
+	std::unique_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
 	std::string shapeName = NLMISC::CFile::getFilename(_RelativePath);
 	sb->add(shapeName, pss);
 	NL3D::CShapeBank *oldSB = NL3D::CNELU::Scene->getShapeBank();
@@ -298,7 +298,7 @@ bool CParticleWorkspace::CNode::loadPS()
 	// collapse name
 	inputFile.open(getFullPath());
 	ss.serial(inputFile);
-	std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
+	std::unique_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
 	std::string shapeName = NLMISC::CFile::getFilename(_RelativePath);
 	sb->add(shapeName, ss.getShapePointer());
 	NL3D::CShapeBank *oldSB = NL3D::CNELU::Scene->getShapeBank();
diff --git a/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp b/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp
index 89830cd5b..f02eef04d 100644
--- a/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp
+++ b/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp
@@ -121,7 +121,7 @@ void CSnapshotToolDlg::stringFromRegistry(HKEY hKey, const TCHAR *name, CString
 		return;
 	}
 
-	std::auto_ptr<TCHAR> tmpDest(new TCHAR[size]);
+	std::unique_ptr<TCHAR[]> tmpDest(new TCHAR[size]);
 	result = RegQueryValueEx(hKey, name, NULL, &type, (BYTE*)tmpDest.get(), &size);
 
 	if (result != ERROR_SUCCESS)
diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh.cpp
index 5f8fd2811..0b5f14a36 100644
--- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh.cpp
+++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_mesh.cpp
@@ -1180,7 +1180,7 @@ void CExportNel::getBSMeshBuild (std::vector<CMesh::CMeshBuild*> &bsList, INode
 			convertMatrix(finalSpace, node.GetNodeTM(time));
 
 	CMeshBase::CMeshBaseBuild *dummyMBB = NULL;		
-	std::auto_ptr<CMesh::CMeshBuild> baseMB(createMeshBuild (node, time, dummyMBB, finalSpace));
+	std::unique_ptr<CMesh::CMeshBuild> baseMB(createMeshBuild (node, time, dummyMBB, finalSpace));
 	delete dummyMBB;
 	dummyMBB = NULL;
 	if (baseMB.get() == NULL) return;
diff --git a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_remanence.cpp b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_remanence.cpp
index e185520aa..9a629a987 100644
--- a/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_remanence.cpp
+++ b/code/nel/tools/3d/plugin_max/nel_mesh_lib/export_remanence.cpp
@@ -39,7 +39,7 @@ static void buildRemanenceError(CExportNel *en, INode &node, const char *mess)
 //=============================================================================================
 NL3D::IShape *CExportNel::buildRemanence(INode& node, TimeValue time)
 {
-	std::auto_ptr<CSegRemanenceShape> srs(new CSegRemanenceShape);
+	std::unique_ptr<CSegRemanenceShape> srs(new CSegRemanenceShape);
 	uint  numSlices = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_SLICE_NUMBER, 2);
 	float samplingPeriod = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_SAMPLING_PERIOD, 0.02f);
 	float rollupRatio    = getScriptAppData (&node, NEL3D_APPDATA_REMANENCE_ROLLUP_RATIO, 1.f);
diff --git a/code/nel/tools/3d/zone_check_bind/zone_check_bind.cpp b/code/nel/tools/3d/zone_check_bind/zone_check_bind.cpp
index 88832a515..8d529936f 100644
--- a/code/nel/tools/3d/zone_check_bind/zone_check_bind.cpp
+++ b/code/nel/tools/3d/zone_check_bind/zone_check_bind.cpp
@@ -95,7 +95,7 @@ static CZone *LoadZone(uint16 xPos, uint16 yPos, std::string zoneExt)
 {
 	std::string zoneName;
 	::getZoneNameByCoord(xPos, yPos, zoneName);
-	std::auto_ptr<CZone> zone(new CZone);
+	std::unique_ptr<CZone> zone(new CZone);
 	std::string lookedUpZoneName = CPath::lookup(zoneName + zoneExt, false, false, false);
 	if (lookedUpZoneName.empty()) return NULL;
 	CIFile iF;
@@ -174,7 +174,7 @@ static uint CheckZone(std::string middleZoneFile, float weldThreshold, float mid
 	// Load the zones around  //
 	////////////////////////////
 
-		std::auto_ptr<CZone>		zones[9];
+		std::unique_ptr<CZone>		zones[9];
 		std::string					zoneNames[9];
 		CZoneInfo					zoneInfos[9];
 		uint16  xPos, yPos;
diff --git a/code/nel/tools/3d/zone_lighter/zone_lighter.cpp b/code/nel/tools/3d/zone_lighter/zone_lighter.cpp
index c8cf250b3..e45f01f5f 100644
--- a/code/nel/tools/3d/zone_lighter/zone_lighter.cpp
+++ b/code/nel/tools/3d/zone_lighter/zone_lighter.cpp
@@ -153,7 +153,7 @@ static void loadIGFromVillage(const NLGEORGES::UFormElm *villageItem, const std:
 			if (inputFile.open (nameLookup))
 			{
 				// New ig
-				std::auto_ptr<CInstanceGroup> group(new CInstanceGroup);
+				std::unique_ptr<CInstanceGroup> group(new CInstanceGroup);
 				try
 				{
 					group->serial (inputFile);
diff --git a/code/nel/tools/nel_unit_test/nel_unit_test.cpp b/code/nel/tools/nel_unit_test/nel_unit_test.cpp
index 753dfd46a..17c161afd 100644
--- a/code/nel/tools/nel_unit_test/nel_unit_test.cpp
+++ b/code/nel/tools/nel_unit_test/nel_unit_test.cpp
@@ -67,7 +67,7 @@ static void usage()
 	exit(0);
 }
 
-static auto_ptr<Test::Output> cmdline(int argc, char* argv[])
+static unique_ptr<Test::Output> cmdline(int argc, char* argv[])
 {
 	if (argc > 2)
 		usage(); // will not return
@@ -102,7 +102,7 @@ static auto_ptr<Test::Output> cmdline(int argc, char* argv[])
 		}
 	}
 
-	return auto_ptr<Test::Output>(output);
+	return unique_ptr<Test::Output>(output);
 }
 
 // Main test program
@@ -134,12 +134,12 @@ int main(int argc, char *argv[])
 	{
 		Test::Suite ts;
 
-		ts.add(auto_ptr<Test::Suite>(new CUTMisc));
-		ts.add(auto_ptr<Test::Suite>(new CUTNet));
-		ts.add(auto_ptr<Test::Suite>(new CUTLigo));
+		ts.add(unique_ptr<Test::Suite>(new CUTMisc));
+		ts.add(unique_ptr<Test::Suite>(new CUTNet));
+		ts.add(unique_ptr<Test::Suite>(new CUTLigo));
 		// Add a line here when adding a new test MODULE
 
-		auto_ptr<Test::Output> output(cmdline(argc, argv));
+		unique_ptr<Test::Output> output(cmdline(argc, argv));
 		noerrors = ts.run(*output);
 
 		Test::HtmlOutput* const html = dynamic_cast<Test::HtmlOutput*>(output.get());
diff --git a/code/nel/tools/nel_unit_test/ut_ligo.h b/code/nel/tools/nel_unit_test/ut_ligo.h
index 6dba782d8..87eadde35 100644
--- a/code/nel/tools/nel_unit_test/ut_ligo.h
+++ b/code/nel/tools/nel_unit_test/ut_ligo.h
@@ -26,7 +26,7 @@ struct CUTLigo : public Test::Suite
 {
 	CUTLigo()
 	{
-		add(auto_ptr<Test::Suite>(new CUTLigoPrimitive));
+		add(unique_ptr<Test::Suite>(new CUTLigoPrimitive));
 		// Add a line here when adding a new test CLASS
 	}
 };
diff --git a/code/nel/tools/nel_unit_test/ut_misc.h b/code/nel/tools/nel_unit_test/ut_misc.h
index e7a3cc8c6..410f1304e 100644
--- a/code/nel/tools/nel_unit_test/ut_misc.h
+++ b/code/nel/tools/nel_unit_test/ut_misc.h
@@ -37,20 +37,20 @@ struct CUTMisc : public Test::Suite
 {
 	CUTMisc()
 	{
-		add(auto_ptr<Test::Suite>(new CUTMiscCoTask));
-		add(auto_ptr<Test::Suite>(new CUTMiscCommand));
-		add(auto_ptr<Test::Suite>(new CUTMiscCommon));
-		add(auto_ptr<Test::Suite>(new CUTMiscConfigFile));
-		add(auto_ptr<Test::Suite>(new CUTMiscDebug));
-		add(auto_ptr<Test::Suite>(new CUTMiscDynLibLoad));
-		add(auto_ptr<Test::Suite>(new CUTMiscFile));
-		add(auto_ptr<Test::Suite>(new CUTMiscPackFile));
-		add(auto_ptr<Test::Suite>(new CUTMiscSingleton));
-		add(auto_ptr<Test::Suite>(new CUTMiscSString));
-		add(auto_ptr<Test::Suite>(new CUTMiscStream));
-		add(auto_ptr<Test::Suite>(new CUTMiscVariable));
-		add(auto_ptr<Test::Suite>(new CUTMiscTypes));
-		add(auto_ptr<Test::Suite>(new CUTMiscStringCommon));
+		add(unique_ptr<Test::Suite>(new CUTMiscCoTask));
+		add(unique_ptr<Test::Suite>(new CUTMiscCommand));
+		add(unique_ptr<Test::Suite>(new CUTMiscCommon));
+		add(unique_ptr<Test::Suite>(new CUTMiscConfigFile));
+		add(unique_ptr<Test::Suite>(new CUTMiscDebug));
+		add(unique_ptr<Test::Suite>(new CUTMiscDynLibLoad));
+		add(unique_ptr<Test::Suite>(new CUTMiscFile));
+		add(unique_ptr<Test::Suite>(new CUTMiscPackFile));
+		add(unique_ptr<Test::Suite>(new CUTMiscSingleton));
+		add(unique_ptr<Test::Suite>(new CUTMiscSString));
+		add(unique_ptr<Test::Suite>(new CUTMiscStream));
+		add(unique_ptr<Test::Suite>(new CUTMiscVariable));
+		add(unique_ptr<Test::Suite>(new CUTMiscTypes));
+		add(unique_ptr<Test::Suite>(new CUTMiscStringCommon));
 		// Add a line here when adding a new test CLASS
 	}
 };
diff --git a/code/nel/tools/nel_unit_test/ut_net.h b/code/nel/tools/nel_unit_test/ut_net.h
index bd43a0eee..396285700 100644
--- a/code/nel/tools/nel_unit_test/ut_net.h
+++ b/code/nel/tools/nel_unit_test/ut_net.h
@@ -28,9 +28,9 @@ struct CUTNet : public Test::Suite
 {
 	CUTNet()
 	{
-		add(auto_ptr<Test::Suite>(new CUTNetLayer3));
-		add(auto_ptr<Test::Suite>(new CUTNetMessage));
-		add(auto_ptr<Test::Suite>(new CUTNetModule));
+		add(unique_ptr<Test::Suite>(new CUTNetLayer3));
+		add(unique_ptr<Test::Suite>(new CUTNetMessage));
+		add(unique_ptr<Test::Suite>(new CUTNetModule));
 		// Add a line here when adding a new test CLASS
 	}
 };
diff --git a/code/ryzom/client/src/door_manager.cpp b/code/ryzom/client/src/door_manager.cpp
index 543d7b415..ba0678dc0 100644
--- a/code/ryzom/client/src/door_manager.cpp
+++ b/code/ryzom/client/src/door_manager.cpp
@@ -273,7 +273,7 @@ void CDoorManager::loadedCallback (NL3D::UInstanceGroup *ig)
 		sShapeName = CPath::lookup(sShapeName,false);
 		if (!sShapeName.empty())
 		{
-			std::auto_ptr<NLPACS::UPrimitiveBlock> pb(NLPACS::UPrimitiveBlock::createPrimitiveBlockFromFile(sShapeName));
+			std::unique_ptr<NLPACS::UPrimitiveBlock> pb(NLPACS::UPrimitiveBlock::createPrimitiveBlockFromFile(sShapeName));
 			NLPACS::UPrimitiveBlock *pPB = pb.release();
 
 			bool bDoorDetectPresent = false;
diff --git a/code/ryzom/client/src/pacs_client.cpp b/code/ryzom/client/src/pacs_client.cpp
index 68266c038..f50531bb7 100644
--- a/code/ryzom/client/src/pacs_client.cpp
+++ b/code/ryzom/client/src/pacs_client.cpp
@@ -194,7 +194,7 @@ void addPacsPrim(const std::string &fileName)
 		nlwarning(("Pacs primitive " + ppName + " already has been inserted").c_str());
 		return;
 	}
-	std::auto_ptr<NLPACS::UPrimitiveBlock> pb(NLPACS::UPrimitiveBlock::createPrimitiveBlockFromFile(fileName));
+	std::unique_ptr<NLPACS::UPrimitiveBlock> pb(NLPACS::UPrimitiveBlock::createPrimitiveBlockFromFile(fileName));
 	PacsPrims[ppName] = pb.release();
 }
 
diff --git a/code/ryzom/client/src/r2/auto_group.cpp b/code/ryzom/client/src/r2/auto_group.cpp
index 5a69511d3..0da724d4b 100644
--- a/code/ryzom/client/src/r2/auto_group.cpp
+++ b/code/ryzom/client/src/r2/auto_group.cpp
@@ -264,7 +264,7 @@ void CAutoGroup::group(CObject *newEntityDesc, const NLMISC::CVectorD &createPos
 	else
 	{
 		// other is a standalone entity -> create a new group
-		std::auto_ptr<CObject> newGroup(getEditor().getDMC().newComponent("NpcGrpFeature"));
+		std::unique_ptr<CObject> newGroup(getEditor().getDMC().newComponent("NpcGrpFeature"));
 		if (!newGroup.get())
 		{
 			nlwarning("Syntax error in r2_features_npc_group.lua.");
diff --git a/code/ryzom/client/src/r2/dmc/client_edition_module.cpp b/code/ryzom/client/src/r2/dmc/client_edition_module.cpp
index 867e3af3e..98c10afb6 100644
--- a/code/ryzom/client/src/r2/dmc/client_edition_module.cpp
+++ b/code/ryzom/client/src/r2/dmc/client_edition_module.cpp
@@ -132,7 +132,7 @@ namespace R2 {
 			client->onScenarioUploaded(server, _Value.get());
 		}
 	private:
-		std::auto_ptr<R2::CObject> _Value;
+		std::unique_ptr<R2::CObject> _Value;
 	};
 
 	class CServerAnswerMsgSet: public IServerAnswerMsg
@@ -148,7 +148,7 @@ namespace R2 {
 	private:
 		std::string _InstanceId;
 		std::string _AttrName;
-		std::auto_ptr<R2::CObject> _Value;
+		std::unique_ptr<R2::CObject> _Value;
 	};
 
 	class CServerAnswerMsgInserted: public IServerAnswerMsg
@@ -166,7 +166,7 @@ namespace R2 {
 		std::string _AttrName;
 		sint32 _Position;
 		std::string _Key;
-		std::auto_ptr<R2::CObject> _Value;
+		std::unique_ptr<R2::CObject> _Value;
 	};
 
 	class CServerAnswerMsgErased: public IServerAnswerMsg
@@ -1140,7 +1140,7 @@ void CClientEditionModule::startingScenario(class NLNET::IModuleProxy * /* serve
 			_Factory->setMaxId("RtEntryText", 0);
 			_Factory->setMaxId("RtPlotItem", 0);
 
-			std::auto_ptr<CObject> rtDataPtr(  _Client->getComLuaModule().translateFeatures(hlScenario , errorMsg) );
+			std::unique_ptr<CObject> rtDataPtr(  _Client->getComLuaModule().translateFeatures(hlScenario , errorMsg) );
 			rtData.setData(rtDataPtr.get());
 
 			if (rtDataPtr.get())
@@ -2351,7 +2351,7 @@ void CClientEditionModule::loadUserComponentFileAccepted(NLNET::IModuleProxy * /
 		return;
 	}
 
-	auto_ptr<CUserComponentValidator> userComponentToLoad(found->second);
+	unique_ptr<CUserComponentValidator> userComponentToLoad(found->second);
 	_UserComponentToLoad.erase(found);
 
 	if (!ok)
@@ -2383,7 +2383,7 @@ void CClientEditionModule::saveScenarioFileAccepted(NLNET::IModuleProxy *senderM
 		return;
 	}
 
-	auto_ptr<CScenarioValidator> scenarioToSave(found->second);
+	unique_ptr<CScenarioValidator> scenarioToSave(found->second);
 	_ScenarioToSave.erase(found);
 
 	if (ok)
@@ -2498,7 +2498,7 @@ void CClientEditionModule::loadScenarioFileAccepted(NLNET::IModuleProxy * /* sen
 		return;
 	}
 
-	auto_ptr<CScenarioValidator> scenarioToLoad(found->second);
+	unique_ptr<CScenarioValidator> scenarioToLoad(found->second);
 	_ScenarioToLoad.erase(found);
 
 	if (!ok)
diff --git a/code/ryzom/client/src/r2/dmc/client_edition_module.h b/code/ryzom/client/src/r2/dmc/client_edition_module.h
index 54afda5cb..3668f6ae6 100644
--- a/code/ryzom/client/src/r2/dmc/client_edition_module.h
+++ b/code/ryzom/client/src/r2/dmc/client_edition_module.h
@@ -1169,7 +1169,7 @@ private:
 	uint32 _MaxNpcs;
 	uint32 _MaxStaticObjects;
 
-	std::auto_ptr<R2::CEmoteBehavior> _Emotes;
+	std::unique_ptr<R2::CEmoteBehavior> _Emotes;
 
 
 	CEditorConfig* _ClientEditorConfig;
diff --git a/code/ryzom/client/src/r2/tool_create_entity.cpp b/code/ryzom/client/src/r2/tool_create_entity.cpp
index e5908f9ff..479e9b495 100644
--- a/code/ryzom/client/src/r2/tool_create_entity.cpp
+++ b/code/ryzom/client/src/r2/tool_create_entity.cpp
@@ -227,7 +227,7 @@ std::string CToolCreateEntity::cloneEntityIntoScenario(CEntityCL *clonee,
 		getDMC().newAction(NLMISC::CI18N::get("uiR2EDCreateAction") + readableName);
 	}
 	// send network commands to create entity on server
-	std::auto_ptr<CObject> desc(getDMC().newComponent(className));
+	std::unique_ptr<CObject> desc(getDMC().newComponent(className));
 
 	if (desc.get())
 	{
diff --git a/code/ryzom/client/src/r2/tool_select_move.cpp b/code/ryzom/client/src/r2/tool_select_move.cpp
index 46c83d83e..c2433a1a3 100644
--- a/code/ryzom/client/src/r2/tool_select_move.cpp
+++ b/code/ryzom/client/src/r2/tool_select_move.cpp
@@ -377,7 +377,7 @@ void CToolSelectMove::commitAction(CInstance &instance)
 						if (_AutoGroup.getGroupingCandidate())
 						{
 							newCopy.push();
-							std::auto_ptr<CObject> desc(CComLuaModule::getObjectFromLua(ls.getStatePointer()));
+							std::unique_ptr<CObject> desc(CComLuaModule::getObjectFromLua(ls.getStatePointer()));
 							_AutoGroup.group(desc.get(), _FinalPos);
 						}
 						else
diff --git a/code/ryzom/client/src/seven_zip/seven_zip.cpp b/code/ryzom/client/src/seven_zip/seven_zip.cpp
index 167b5163b..f9022b59d 100644
--- a/code/ryzom/client/src/seven_zip/seven_zip.cpp
+++ b/code/ryzom/client/src/seven_zip/seven_zip.cpp
@@ -196,13 +196,13 @@ bool unpackLZMA(const std::string &lzmaFile, const std::string &destFileName)
 	}
 
 	// allocate input buffer for props
-	auto_ptr<uint8> propsBuffer = auto_ptr<uint8>(new uint8[LZMA_PROPS_SIZE]);
+	unique_ptr<uint8[]> propsBuffer(new uint8[LZMA_PROPS_SIZE]);
 
 	// size of LZMA content
 	inSize -= LZMA_PROPS_SIZE + 8;
 
 	// allocate input buffer for lzma data
-	auto_ptr<uint8> inBuffer = auto_ptr<uint8>(new uint8[inSize]);
+	unique_ptr<uint8[]> inBuffer(new uint8[inSize]);
 
 	uint64 fileSize = 0;
 
@@ -224,7 +224,7 @@ bool unpackLZMA(const std::string &lzmaFile, const std::string &destFileName)
 	}
 
 	// allocate the output buffer
-	auto_ptr<uint8> outBuffer = auto_ptr<uint8>(new uint8[fileSize]);
+	unique_ptr<uint8[]> outBuffer(new uint8[fileSize]);
 
 	// in and out file sizes
 	SizeT outProcessed = (SizeT)fileSize;
@@ -273,7 +273,7 @@ bool packLZMA(const std::string &srcFileName, const std::string &lzmaFileName)
 	}
 
 	// allocate input buffer
-	auto_ptr<uint8> inBuffer = auto_ptr<uint8>(new uint8[inSize]);
+	unique_ptr<uint8[]> inBuffer(new uint8[inSize]);
 
 	try
 	{
@@ -288,11 +288,11 @@ bool packLZMA(const std::string &srcFileName, const std::string &lzmaFileName)
 
 	// allocate output buffer
 	size_t outSize = (11 * inSize / 10) + 65536; // worst case = 1.1 * size + 64K
-	auto_ptr<uint8> outBuffer = auto_ptr<uint8>(new uint8[outSize]);
+	unique_ptr<uint8[]> outBuffer(new uint8[outSize]);
 
 	// allocate buffer for props
 	size_t outPropsSize = LZMA_PROPS_SIZE;
-	auto_ptr<uint8> outProps = auto_ptr<uint8>(new uint8[outPropsSize]);
+	unique_ptr<uint8[]> outProps(new uint8[outPropsSize]);
 
 	// compress with best compression and other default settings
 	sint res = LzmaCompress(outBuffer.get(), &outSize, inBuffer.get(), inSize, outProps.get(), &outPropsSize, 9, 1 << 27, -1, -1, -1, -1, 1);
diff --git a/code/ryzom/client/src/sky.cpp b/code/ryzom/client/src/sky.cpp
index 5d66c2d70..696d67251 100644
--- a/code/ryzom/client/src/sky.cpp
+++ b/code/ryzom/client/src/sky.cpp
@@ -294,7 +294,7 @@ CBitmap *buildSharedBitmap(const std::string &filename,
 		// load the bitmap
 		std::string path = CPath::lookup(filename, false);
 		if (path.empty()) return NULL;
-		std::auto_ptr<CBitmap> bm(new CBitmap);
+		std::unique_ptr<CBitmap> bm(new CBitmap);
 		try
 		{
 			CIFile f;
diff --git a/code/ryzom/common/src/game_share/ring_session_manager_itf.h b/code/ryzom/common/src/game_share/ring_session_manager_itf.h
index 44c1ad61c..7dc9d5af3 100644
--- a/code/ryzom/common/src/game_share/ring_session_manager_itf.h
+++ b/code/ryzom/common/src/game_share/ring_session_manager_itf.h
@@ -2395,7 +2395,7 @@ namespace RSMGR
 	protected:
 
 		/// the callback server adaptor
-		std::auto_ptr<ICallbackServerAdaptor>	_CallbackServer;
+		std::unique_ptr<ICallbackServerAdaptor>	_CallbackServer;
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
 		{
@@ -2466,12 +2466,12 @@ namespace RSMGR
 			if (replacementAdaptor == NULL)
 			{
 				// use default callback server
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(replacementAdaptor);
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(replacementAdaptor);
 			}
 		}
 
@@ -3860,7 +3860,7 @@ namespace RSMGR
 	protected:
 
 		/// the callback client adaptor
-		std::auto_ptr < ICallbackClientAdaptor >	_CallbackClient;
+		std::unique_ptr < ICallbackClientAdaptor >	_CallbackClient;
 
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
@@ -3924,12 +3924,12 @@ namespace RSMGR
 			if (adaptorReplacement == NULL)
 			{
 				// use the default Nel adaptor
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(adaptorReplacement);
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(adaptorReplacement);
 			}
 		}
 
diff --git a/code/ryzom/common/src/game_share/server_animation_module.cpp b/code/ryzom/common/src/game_share/server_animation_module.cpp
index f16d7c9d8..19446abc1 100644
--- a/code/ryzom/common/src/game_share/server_animation_module.cpp
+++ b/code/ryzom/common/src/game_share/server_animation_module.cpp
@@ -362,7 +362,7 @@ public:
 	typedef std::map<uint32, TCharacterInfo> TCharacterInfos;
 
 public:
-	std::auto_ptr<CObject> RtData;
+	std::unique_ptr<CObject> RtData;
 	TScenarioHeaderSerializer ScenarioHeader;
 	TSessionId SessionId;
 	//vector<userId>
diff --git a/code/ryzom/common/src/game_share/server_edition_module.cpp b/code/ryzom/common/src/game_share/server_edition_module.cpp
index 1ab30148c..6ddbe8931 100644
--- a/code/ryzom/common/src/game_share/server_edition_module.cpp
+++ b/code/ryzom/common/src/game_share/server_edition_module.cpp
@@ -2215,7 +2215,7 @@ void CServerEditionModule::onNodeSetAsked(NLNET::IModuleProxy *senderModuleProxy
 
 	value2.uncompress();
 	CObject* value = value2.getData();
-	std::auto_ptr<CObject> autoDelete(value);
+	std::unique_ptr<CObject> autoDelete(value);
 
 
 	bool ok = checkSecurityInfo(senderModuleProxy, charId, clientEid, userPriv, extendedPriv);
@@ -5116,7 +5116,7 @@ bool CServerEditionModule::wakeUpSession(TSessionId sessionId, TCharId ownerChar
 
 void CServerEditionModule::wakeUpSessionImpl(CEditionSession* session)
 {
-	std::auto_ptr<CEditionSession> sessionPtr(session);
+	std::unique_ptr<CEditionSession> sessionPtr(session);
 	TSessionId sessionId = sessionPtr->SessionId;
 
 	TSessions::iterator found = _Sessions.find(sessionId);
diff --git a/code/ryzom/common/src/game_share/server_edition_module.h b/code/ryzom/common/src/game_share/server_edition_module.h
index 6a758534d..d5f565dc7 100644
--- a/code/ryzom/common/src/game_share/server_edition_module.h
+++ b/code/ryzom/common/src/game_share/server_edition_module.h
@@ -541,7 +541,7 @@ namespace R2
 		private:
 			std::set<TSessionId> _Sessions;
 
-			std::auto_ptr<CUserComponent> _Component;
+			std::unique_ptr<CUserComponent> _Component;
 		};
 
 		struct CHashKeyMD5Less : public std::binary_function<NLMISC::CHashKeyMD5, NLMISC::CHashKeyMD5, bool>
@@ -637,7 +637,7 @@ namespace R2
 		CTaskList<NLMISC::TTime> _RingAccessTasks; // Remove people that do not belong here
 		TOverrideRingAccess _OverrideRingAccess; //Ring access for dev
 		bool _MustUpdateOverrideRingAcess;
-		std::auto_ptr<CIdRecycle> _IdRecycle;
+		std::unique_ptr<CIdRecycle> _IdRecycle;
 
 		TKicked _Kicked;
 		//
diff --git a/code/ryzom/server/src/admin_modules/admin_modules_itf.h b/code/ryzom/server/src/admin_modules/admin_modules_itf.h
index aeaf8ef88..a77d52935 100644
--- a/code/ryzom/server/src/admin_modules/admin_modules_itf.h
+++ b/code/ryzom/server/src/admin_modules/admin_modules_itf.h
@@ -55,7 +55,7 @@ namespace ADMIN
 	protected:
 
 		/// the callback server adaptor
-		std::auto_ptr<ICallbackServerAdaptor>	_CallbackServer;
+		std::unique_ptr<ICallbackServerAdaptor>	_CallbackServer;
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
 		{
@@ -102,12 +102,12 @@ namespace ADMIN
 			if (replacementAdaptor == NULL)
 			{
 				// use default callback server
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(replacementAdaptor);
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(replacementAdaptor);
 			}
 		}
 
@@ -439,7 +439,7 @@ namespace ADMIN
 	protected:
 
 		/// the callback client adaptor
-		std::auto_ptr < ICallbackClientAdaptor >	_CallbackClient;
+		std::unique_ptr < ICallbackClientAdaptor >	_CallbackClient;
 
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
@@ -493,12 +493,12 @@ namespace ADMIN
 			if (adaptorReplacement == NULL)
 			{
 				// use the default Nel adaptor
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(adaptorReplacement);
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(adaptorReplacement);
 			}
 		}
 
diff --git a/code/ryzom/server/src/logger_service/log_query.cpp b/code/ryzom/server/src/logger_service/log_query.cpp
index ec010697e..9c3d093c0 100644
--- a/code/ryzom/server/src/logger_service/log_query.cpp
+++ b/code/ryzom/server/src/logger_service/log_query.cpp
@@ -145,7 +145,7 @@ CQueryParser::TParserResult CQueryParser::parseQuery(const std::string &queryStr
 			return pr;
 		}
 
-		auto_ptr<TQueryNode> rootNode(parseExpr(first, queryStr.end()));
+		unique_ptr<TQueryNode> rootNode(parseExpr(first, queryStr.end()));
 
 		// make sure we have consumed all the stream
 		iterator rew = first;
diff --git a/code/ryzom/server/src/logger_service/log_query.h b/code/ryzom/server/src/logger_service/log_query.h
index d311b6056..0e046fdfb 100644
--- a/code/ryzom/server/src/logger_service/log_query.h
+++ b/code/ryzom/server/src/logger_service/log_query.h
@@ -1190,7 +1190,7 @@ public:
 	struct TParserResult
 	{
 		/// The query tree
-		mutable std::auto_ptr<TQueryNode> QueryTree;
+		mutable std::unique_ptr<TQueryNode> QueryTree;
 
 		/// Option to extract full context with selected logs
 		bool		FullContext;
diff --git a/code/ryzom/server/src/server_share/continent_container.cpp b/code/ryzom/server/src/server_share/continent_container.cpp
index 90b7b60c7..d44604052 100644
--- a/code/ryzom/server/src/server_share/continent_container.cpp
+++ b/code/ryzom/server/src/server_share/continent_container.cpp
@@ -293,7 +293,7 @@ void	CContinentContainer::initPacsPrim(const string &path)
 			if (_PacsPrimMap.find(ppName) != _PacsPrimMap.end())
 				continue;
 
-			std::auto_ptr<UPrimitiveBlock>	pb(UPrimitiveBlock::createPrimitiveBlockFromFile(CPath::lookup(fileNames[k], false)));
+			std::unique_ptr<UPrimitiveBlock>	pb(UPrimitiveBlock::createPrimitiveBlockFromFile(CPath::lookup(fileNames[k], false)));
 			UPrimitiveBlock*	ptr = pb.release();
 			if (ptr != NULL)
 			{
diff --git a/code/ryzom/server/src/server_share/login_service_itf.h b/code/ryzom/server/src/server_share/login_service_itf.h
index f33d361f2..a032cb5b6 100644
--- a/code/ryzom/server/src/server_share/login_service_itf.h
+++ b/code/ryzom/server/src/server_share/login_service_itf.h
@@ -43,7 +43,7 @@ namespace LS
 	protected:
 
 		/// the callback server adaptor
-		std::auto_ptr<ICallbackServerAdaptor>	_CallbackServer;	
+		std::unique_ptr<ICallbackServerAdaptor>	_CallbackServer;	
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
 		{
@@ -85,12 +85,12 @@ namespace LS
 			if (replacementAdaptor == NULL)
 			{
 				// use default callback server
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(replacementAdaptor);
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(replacementAdaptor);
 			}
 		}
 
@@ -259,7 +259,7 @@ namespace LS
 	protected:
 
 		/// the callback client adaptor
-		std::auto_ptr < ICallbackClientAdaptor >	_CallbackClient;
+		std::unique_ptr < ICallbackClientAdaptor >	_CallbackClient;
 
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
@@ -315,12 +315,12 @@ namespace LS
 			if (adaptorReplacement == NULL)
 			{
 				// use the default Nel adaptor
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(adaptorReplacement);
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(adaptorReplacement);
 			}
 		}
 
diff --git a/code/ryzom/server/src/server_share/mail_forum_itf.h b/code/ryzom/server/src/server_share/mail_forum_itf.h
index 8b6ff22e5..6d85e4606 100644
--- a/code/ryzom/server/src/server_share/mail_forum_itf.h
+++ b/code/ryzom/server/src/server_share/mail_forum_itf.h
@@ -168,7 +168,7 @@ namespace MFS
 	protected:
 
 		/// the callback server adaptor
-		std::auto_ptr<ICallbackServerAdaptor>	_CallbackServer;	
+		std::unique_ptr<ICallbackServerAdaptor>	_CallbackServer;	
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
 		{
@@ -210,12 +210,12 @@ namespace MFS
 			if (replacementAdaptor == NULL)
 			{
 				// use default callback server
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(new CNelCallbackServerAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackServer = std::auto_ptr<ICallbackServerAdaptor>(replacementAdaptor);
+				_CallbackServer = std::unique_ptr<ICallbackServerAdaptor>(replacementAdaptor);
 			}
 		}
 
@@ -351,7 +351,7 @@ namespace MFS
 	protected:
 
 		/// the callback client adaptor
-		std::auto_ptr < ICallbackClientAdaptor >	_CallbackClient;
+		std::unique_ptr < ICallbackClientAdaptor >	_CallbackClient;
 
 
 		void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
@@ -405,12 +405,12 @@ namespace MFS
 			if (adaptorReplacement == NULL)
 			{
 				// use the default Nel adaptor
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(new CNelCallbackClientAdaptor(this));
 			}
 			else
 			{
 				// use the replacement one
-				_CallbackClient = std::auto_ptr < ICallbackClientAdaptor >(adaptorReplacement);
+				_CallbackClient = std::unique_ptr < ICallbackClientAdaptor >(adaptorReplacement);
 			}
 		}
 
diff --git a/code/ryzom/server/src/server_share/mysql_wrapper.cpp b/code/ryzom/server/src/server_share/mysql_wrapper.cpp
index 3bb343314..285b88429 100644
--- a/code/ryzom/server/src/server_share/mysql_wrapper.cpp
+++ b/code/ryzom/server/src/server_share/mysql_wrapper.cpp
@@ -237,22 +237,22 @@ namespace MSW
 	}
 
 
-	std::auto_ptr<CStoreResult>		CConnection::storeResult()
+	std::unique_ptr<CStoreResult>		CConnection::storeResult()
 	{
 		H_AUTO(CConnection_storeResult);
 		MYSQL_RES *res = mysql_store_result(_MysqlContext);
 
-		std::auto_ptr<CStoreResult> sr = std::auto_ptr<CStoreResult>(new CStoreResult(res));
+		std::unique_ptr<CStoreResult> sr(new CStoreResult(res));
 
 		return sr;
 	}
 
-	std::auto_ptr<CUseResult>		CConnection::useResult()
+	std::unique_ptr<CUseResult>		CConnection::useResult()
 	{
 		H_AUTO(CConnection_useResult);
 		MYSQL_RES *res = mysql_use_result(_MysqlContext);
 
-		std::auto_ptr<CUseResult> sr = std::auto_ptr<CUseResult>(new CUseResult(res));
+		std::unique_ptr<CUseResult> sr(new CUseResult(res));
 
 		return sr;
 	}
diff --git a/code/ryzom/server/src/server_share/mysql_wrapper.h b/code/ryzom/server/src/server_share/mysql_wrapper.h
index 14836da5a..2af472f3a 100644
--- a/code/ryzom/server/src/server_share/mysql_wrapper.h
+++ b/code/ryzom/server/src/server_share/mysql_wrapper.h
@@ -108,8 +108,8 @@ namespace MSW
 			return uint32(mysql_affected_rows(_MysqlContext));
 		}
 
-		std::auto_ptr<CStoreResult>		storeResult();
-		std::auto_ptr<CUseResult>		useResult();
+		std::unique_ptr<CStoreResult>		storeResult();
+		std::unique_ptr<CUseResult>		useResult();
 
 	};
 
diff --git a/code/ryzom/server/src/session_browser_server/session_browser_server.cpp b/code/ryzom/server/src/session_browser_server/session_browser_server.cpp
index b86b59c5c..a8ae1d9be 100644
--- a/code/ryzom/server/src/session_browser_server/session_browser_server.cpp
+++ b/code/ryzom/server/src/session_browser_server/session_browser_server.cpp
@@ -642,7 +642,7 @@ public:
 
 			return;
 		}
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 		if (result->getNumRows() != 1)
 		{
 			nlinfo("Client from '%s' submited auth cookie '%s' for user %u, but DB return %u row instead of 1",
@@ -726,7 +726,7 @@ public:
 			query << "SELECT session_id, kicked";
 			query << " FROM session_participant WHERE char_id = "<< charId;
 			BOMB_IF(!_RingDB.query(query), "error", CSessionBrowserServerWebItf::_CallbackServer->disconnect(from); return);
-			auto_ptr<CStoreResult> result(_RingDB.storeResult());	
+			unique_ptr<CStoreResult> result(_RingDB.storeResult());	
 			uint32 row = result->getNumRows();
 			uint32 index = 0;
 
@@ -757,7 +757,7 @@ public:
 		query << " FROM characters WHERE char_id = "<<charId;
 
 		BOMB_IF(!_RingDB.query(query), "error", CSessionBrowserServerWebItf::_CallbackServer->disconnect(from); return);
-		auto_ptr<CStoreResult> result(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 		BOMB_IF(result->getNumRows() != 1, "error", CSessionBrowserServerWebItf::_CallbackServer->disconnect(from); return);
 		result->fetchRow();
 		uint32 guildId;
@@ -831,7 +831,7 @@ public:
 
 
 		BOMB_IF(!_RingDB.query(query), "error", CSessionBrowserServerWebItf::_CallbackServer->disconnect(from); return);
-		auto_ptr<CStoreResult> result2(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result2(_RingDB.storeResult());
 //		BOMB_IF(result->getNumFields() != 1, "error", CSessionBrowserServerWebItf::_CallbackServer->disconnect(from); return);
 
 		// parse the result set and build the return vector
@@ -917,7 +917,7 @@ public:
 			query << " WHERE current_status='cs_online'";
 			query << " AND current_session="<< sd.getSessionId();
 			BOMB_IF(!_RingDB.query(query), "error", CSessionBrowserServerWebItf::_CallbackServer->disconnect(from); return);
-			auto_ptr<CStoreResult> result3(_RingDB.storeResult());
+			unique_ptr<CStoreResult> result3(_RingDB.storeResult());
 			BOMB_IF(result2->getNumRows()<1,"Expected 1 result from SQL nbPlayers request but retrieved none",return);
 			uint32 nbPlayers;
 			result3->fetchRow();
@@ -960,7 +960,7 @@ public:
 		query << " AND ring_users.user_id = characters.user_id";
 
 		BOMB_IF(!_RingDB.query(query), "getCharList : error executing request in database", charList(from, charId, sessionId, vector <TCharDesc>()); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 		vector <TCharDesc> charDescs;
 		charDescs.resize(result->getNumRows());
@@ -1044,7 +1044,7 @@ public:
 		CSString query;
 		query << "SELECT home_mainland_session_id, current_session FROM characters WHERE char_id = "<<charId;
 		BOMB_IF(!_RingDB.query(query), "invitedCharacterByName : failed request in database", invokeResult(from, charId >> 4, 103, "Database request failed"); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 		BOMB_IF (result->getNumRows() == 0, "invitedCharacterByName : can't find char "<<charId<<" in the characters table", invokeResult(from, charId >> 4, 100, "Owner requester character"); return);
 		result->fetchRow();
@@ -1064,7 +1064,7 @@ public:
 		query << "SELECT char_id FROM characters WHERE char_name = '"<<shortName<<"' AND home_mainland_session_id = "<<invitedCharHome.asInt();
 
 		BOMB_IF(!_RingDB.query(query), "invitedCharacterByName : failed request 2 in database", invokeResult(from, charId >> 4, 103, "Database request failed"); return);
-		result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		result = unique_ptr<CStoreResult>(_RingDB.storeResult());
 
 		BOMB_IF (result->getNumRows() == 0, "invitedCharacterByName : can't find invited char '"<<shortName<<"' from shard "<<invitedCharHome.asInt()<<" in the characters table", invokeResult(from, charId >> 4, 104, "Invited char not found"); return);
 		result->fetchRow();
@@ -1097,7 +1097,7 @@ public:
 		query << " WHERE char_id = "<<charId<<" AND session_log.id = "<<sessionId;
 
 		BOMB_IF(!_RingDB.query(query), "getRingRatings : failed request in database", playerRatings(from, charId, false, 0,0,0,0,0); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 		if (result->getNumRows() == 0)
 		{
@@ -1133,7 +1133,7 @@ public:
 		query << " GROUP BY session_log.id";
 
 		BOMB_IF(!_RingDB.query(query), "getScessionAverageScores : failed request in database", sessionAverageScores(from, false, 0,0,0,0,0, 0); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 		if (result->getNumRows() == 0)
 		{
@@ -1178,7 +1178,7 @@ public:
 		query << " GROUP BY scenario.id";
 
 		BOMB_IF(!_RingDB.query(query), "getScenarioAverageScores : failed request in database", scenarioAverageScores(from, false, 0,0,0,0,0,0); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 		
 		if (result->getNumRows() == 0)
 		{
@@ -1219,7 +1219,7 @@ public:
 		CSString query;
 		query << "SELECT rrp_am, rrp_masterless, rrp_author FROM characters WHERE char_id = "<<charId;
 		BOMB_IF(!_RingDB.query(query), "getRingRatings : failed request in database", ringRatings(from, charId, 0, 0, 0); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 		BOMB_IF (result->getNumRows() == 0, "getRingRatings : can't find char "<<charId<<" in the characters table", ringRatings(from, charId, 0, 0, 0); return);
 		result->fetchRow();
@@ -1240,7 +1240,7 @@ public:
 		CSString query;
 		query << "SELECT ring_access FROM characters WHERE char_id = "<<charId;
 		BOMB_IF(!_RingDB.query(query), "on_getRingPoints: failed request in database", ringPoints(from, charId, "", MaxRingPoints); return);
-		auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+		unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 		BOMB_IF (result->getNumRows() == 0, "on_getRingPoints : can't find char "<<charId<<" in the characters table", ringPoints(from, charId, "", MaxRingPoints); return);
 		result->fetchRow();
diff --git a/code/ryzom/server/src/shard_unifier_service/character_sync.cpp b/code/ryzom/server/src/shard_unifier_service/character_sync.cpp
index 29b404567..dccfd236b 100644
--- a/code/ryzom/server/src/shard_unifier_service/character_sync.cpp
+++ b/code/ryzom/server/src/shard_unifier_service/character_sync.cpp
@@ -1307,7 +1307,7 @@ namespace CHARSYNC
 					query << " AND session_type = 'st_edit'";
 					if (_RingDB.query(query) )
 					{
-						std::auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDB.storeResult());
+						std::unique_ptr<CStoreResult> result(_RingDB.storeResult());
 
 						bool sessionClosed = false;
 						if (!result->getNumRows() == 0)
@@ -1389,7 +1389,7 @@ namespace CHARSYNC
 //					return true;
 //				}
 //
-//				std::auto_ptr<CStoreResult> result = std::auto_ptr<CStoreResult>(_RingDB.storeResult());
+//				std::unique_ptr<CStoreResult> result(_RingDB.storeResult());
 //
 //				result->fetchRow();
 //				result->getField(0, dstUserId);
diff --git a/code/ryzom/server/src/shard_unifier_service/database_mapping.cpp b/code/ryzom/server/src/shard_unifier_service/database_mapping.cpp
index 498253992..93ac5eda1 100644
--- a/code/ryzom/server/src/shard_unifier_service/database_mapping.cpp
+++ b/code/ryzom/server/src/shard_unifier_service/database_mapping.cpp
@@ -578,7 +578,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -638,7 +638,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -1230,7 +1230,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -1288,7 +1288,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -1992,7 +1992,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -2082,7 +2082,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -3940,7 +3940,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -4092,7 +4092,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -5435,7 +5435,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -6105,7 +6105,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -6155,7 +6155,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -6748,7 +6748,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -6808,7 +6808,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -7378,7 +7378,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -7965,7 +7965,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -8637,7 +8637,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -8687,7 +8687,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -9909,7 +9909,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		for (uint i=0; i<result->getNumRows(); ++i)
 		{
@@ -10453,7 +10453,7 @@ namespace RSMGR
 			return false;
 		}
 
-		std::auto_ptr<MSW::CStoreResult> result = connection.storeResult();
+		std::unique_ptr<MSW::CStoreResult> result(connection.storeResult());
 
 		// check that the data description is consistent with database content
 		nlassert(result->getNumRows() <= 1);
diff --git a/code/ryzom/server/src/shard_unifier_service/login_service.cpp b/code/ryzom/server/src/shard_unifier_service/login_service.cpp
index 5ded2eafa..75c547ec7 100644
--- a/code/ryzom/server/src/shard_unifier_service/login_service.cpp
+++ b/code/ryzom/server/src/shard_unifier_service/login_service.cpp
@@ -382,7 +382,7 @@ namespace LS
 			CSString query;
 			query << "SELECT UId FROM user WHERE GMId = "<<userId<<"";
 			BOMB_IF(!_NelDb.query(query), "on_login : Failed to request in database", loginResult(from, userId, "", 6, "Failed request"); return);
-			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_NelDb.storeResult());
+			unique_ptr<CStoreResult> result(_NelDb.storeResult());
 			for (uint32 i=0; i!=result->getNumRows(); ++i)
 			{
 				result->fetchRow();
diff --git a/code/ryzom/server/src/shard_unifier_service/mail_forum_notfier_fwd.cpp b/code/ryzom/server/src/shard_unifier_service/mail_forum_notfier_fwd.cpp
index 65b1b1924..f794c6d84 100644
--- a/code/ryzom/server/src/shard_unifier_service/mail_forum_notfier_fwd.cpp
+++ b/code/ryzom/server/src/shard_unifier_service/mail_forum_notfier_fwd.cpp
@@ -207,7 +207,7 @@ namespace MFS
 
 					BOMB_IF(!_RingDb.query(query), ("Database error, no guild forum notification"), break;);
 
-					auto_ptr<MSW::CStoreResult> result = _RingDb.storeResult();
+					unique_ptr<MSW::CStoreResult> result(_RingDb.storeResult());
 
 					BOMB_IF(result->getNumRows() != 1, ("Database error, no guild forum notification"), break;);
 
@@ -229,7 +229,7 @@ namespace MFS
 			string query = "SELECT COUNT(*) FROM mfs_mail WHERE date > '"+MSW::encodeDate(lastDisconnectionDate)+"' AND status = 'ms_new' AND erase_series = 0";
 			BOMB_IF(!_RingDb.query(query), ("Database error, no mail notification"), return;);
 
-			auto_ptr<MSW::CStoreResult> result = _RingDb.storeResult();
+			unique_ptr<MSW::CStoreResult> result(_RingDb.storeResult());
 
 			BOMB_IF(result->getNumRows() != 1, ("Database error, no mail notification"), return;);
 
diff --git a/code/ryzom/server/src/shard_unifier_service/name_manager.cpp b/code/ryzom/server/src/shard_unifier_service/name_manager.cpp
index 17b500f92..4087ef9d0 100644
--- a/code/ryzom/server/src/shard_unifier_service/name_manager.cpp
+++ b/code/ryzom/server/src/shard_unifier_service/name_manager.cpp
@@ -789,7 +789,7 @@ bool CNameManager::loadAccountNamesFromDatabase()
 	query << "SELECT user_id, user_name FROM ring_users";
 	BOMB_IF(!_Database->query(query), "Failed to load account names from the database", return false);
 
-	auto_ptr<CUseResult> result = _Database->useResult();
+	unique_ptr<CUseResult> result(_Database->useResult());
 
 	while (result->fetchRow())
 	{
@@ -986,7 +986,7 @@ bool CNameManager::loadCharacterNamesFromDatabase()
 	query << "SELECT char_id, char_name, home_mainland_session_id FROM characters";
 	BOMB_IF(!_Database->query(query), "Failed to load character names from the database", return false);
 
-	auto_ptr<CUseResult> result = _Database->useResult();
+	unique_ptr<CUseResult> result(_Database->useResult());
 
 	while (result->fetchRow())
 	{
diff --git a/code/ryzom/server/src/shard_unifier_service/ring_session_manager.cpp b/code/ryzom/server/src/shard_unifier_service/ring_session_manager.cpp
index 2ed06065b..685700e71 100644
--- a/code/ryzom/server/src/shard_unifier_service/ring_session_manager.cpp
+++ b/code/ryzom/server/src/shard_unifier_service/ring_session_manager.cpp
@@ -299,7 +299,7 @@ namespace RSMGR
 			list<TSessionId> sessionIds;
 			{
 				// scope the result to make it destroyed at scope end
-				auto_ptr<MSW::CUseResult> result(_RingDb.useResult());
+				unique_ptr<MSW::CUseResult> result(_RingDb.useResult());
 
 				// for each open session, put it in the locked state
 				while (result->fetchRow())
@@ -627,7 +627,7 @@ namespace RSMGR
 //			query << " AND ShardId = " << shardId;
 //
 //			BOMB_IF(!_NelDb.query(query), "registerWS : Failed to request into the NeL database", return CNelShardPtr());
-//			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_NelDb.storeResult());
+//			unique_ptr<CStoreResult> result(_NelDb.storeResult());
 //			BOMB_IF(result.get() == NULL, "registerWS : Failed to retrieve request result", return CNelShardPtr());
 //
 //			if (result->getNumRows() == 0)
@@ -656,7 +656,7 @@ namespace RSMGR
 //				joinSessionResult(from, charId>>4, 0, 12, "failed to request for access permission", TSessionPartStatus::invalid_val);
 				return false;
 			}
-			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_NelDb.storeResult());
+			unique_ptr<CStoreResult> result(_NelDb.storeResult());
 			if (result->getNumRows() == 0)
 			{
 				return false;
@@ -1008,7 +1008,7 @@ restartLoop:
 			CSString query;
 			query << "SELECT id FROM scenario WHERE md5 = '"<<scenarioInfo.getScenarioKey().toString()<<"'";
 			BOMB_IF(!_RingDb.query(query), "Failed to request in ring database", return;);
-			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDb.storeResult());
+			unique_ptr<CStoreResult> result(_RingDb.storeResult());
 			if (result->getNumRows() != 0)
 			{
 				result->fetchRow();
@@ -1139,7 +1139,7 @@ restartLoop:
 			CSString query;
 			query << "SELECT id FROM scenario WHERE md5 = '"<<scenarioInfo.getScenarioKey().toString()<<"'";
 			BOMB_IF(!_RingDb.query(query), "Failed to request in ring database", return;);
-			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDb.storeResult());
+			unique_ptr<CStoreResult> result(_RingDb.storeResult());
 			if (result->getNumRows() != 0)
 			{
 				result->fetchRow();
@@ -1918,7 +1918,7 @@ endOfWelcomeUserResult:
 			CSString query;
 			query << "SELECT COUNT(*) FROM sessions WHERE owner = "<<charId<<" AND state = '"<<TSessionState::toString(TSessionState::ss_open)<<"' AND session_type = '"<<session->getSessionType().toString()<<"'";
 			BOMB_IF(!_RingDb.query(query), "Failed to count number of edit session for character "<<charId, invokeResult(from, charId>>4, 5, "Database failure"); return);
-			auto_ptr<MSW::CStoreResult> result = _RingDb.storeResult();
+			unique_ptr<MSW::CStoreResult> result(_RingDb.storeResult());
 
 			result->fetchRow();
 			uint32 nbSession;
@@ -2114,7 +2114,7 @@ endOfWelcomeUserResult:
 			query << " AND session_type = 'st_edit'";
 			BOMB_IF(!_RingDb.query(query), "Error in database request", invokeResult(from, userId, 2, "Error in database request"); return);
 
-			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDb.storeResult());
+			unique_ptr<CStoreResult> result(_RingDb.storeResult());
 
 			bool sessionClosed = false;
 			if (result->getNumRows() == 0)
@@ -2196,7 +2196,7 @@ endOfWelcomeUserResult:
 				query << "SELECT session_id FROM sessions";
 				query << " WHERE owner = "<<charId<<" AND session_type ='st_edit'";
 				BOMB_IF(!_RingDb.query(query), "on_hibernateEditSession : Failed to request in database", invokeResult(from, charId>>4, 1, "Database error"); return);
-				auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDb.storeResult());
+				unique_ptr<CStoreResult> result(_RingDb.storeResult());
 
 				// 1.1 : if no session so no need to hibernate (not an error)
 				if (result->getNumRows() != 0)
@@ -2243,7 +2243,7 @@ endOfWelcomeUserResult:
 				query << "SELECT session_id FROM sessions";
 				query << " WHERE owner = "<<charId<<" AND session_type ='st_anim'";
 				BOMB_IF(!_RingDb.query(query), "on_hibernateEditSession : Failed to request in database", invokeResult(from, charId>>4, 1, "Database error"); return);
-				auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDb.storeResult());
+				unique_ptr<CStoreResult> result(_RingDb.storeResult());
 
 				// 1.1 : if no session so no need to hibernate (not an error)
 				if (result->getNumRows() > 1)
@@ -3546,7 +3546,7 @@ endOfWelcomeUserResult:
 			query << "SELECT session_id FROM sessions";
 			query << " WHERE owner = "<<charId<<" AND session_type ='st_edit'";
 			BOMB_IF(!_RingDb.query(query), "on_joinEditSession : Failed to request in database", joinSessionResult(from, charId>>4, TSessionId(0), 11, "Database error", TSessionPartStatus::invalid_val); return);
-			auto_ptr<CStoreResult> result = auto_ptr<CStoreResult>(_RingDb.storeResult());
+			unique_ptr<CStoreResult> result(_RingDb.storeResult());
 
 			// 1.1 : if no session found, return an error to the client
 			if (result->getNumRows() == 0)
@@ -4387,7 +4387,7 @@ endOfWelcomeUserResult:
 
 			set<uint32> sessionToClose;
 
-			auto_ptr<MSW::CUseResult> result = _RingDb.useResult();
+			unique_ptr<MSW::CUseResult> result = _RingDb.useResult();
 
 			while (result->fetchRow())
 			{
diff --git a/code/ryzom/server/src/simulation_service/simulated_ring_session_manager.cpp b/code/ryzom/server/src/simulation_service/simulated_ring_session_manager.cpp
index 11a33d627..eaaa549a5 100644
--- a/code/ryzom/server/src/simulation_service/simulated_ring_session_manager.cpp
+++ b/code/ryzom/server/src/simulation_service/simulated_ring_session_manager.cpp
@@ -114,7 +114,7 @@ namespace RSMGR
 		list<uint32> sessionIds;
 		{
 			// scope the result to make it destroyed at scope end
-			auto_ptr<MSW::CUseResult> result(_RingDb.useResult());
+			unique_ptr<MSW::CUseResult> result(_RingDb.useResult());
 
 			// for each open session, put it in the locked state
 			while (result->fetchRow())
@@ -1313,7 +1313,7 @@ namespace RSMGR
 
 		set<uint32> sessionToClose;
 
-		auto_ptr<MSW::CUseResult> result = _RingDb.useResult();
+		unique_ptr<MSW::CUseResult> result(_RingDb.useResult());
 
 		while (result->fetchRow())
 		{
diff --git a/code/ryzom/tools/leveldesign/mission_compiler_lib/steps.cpp b/code/ryzom/tools/leveldesign/mission_compiler_lib/steps.cpp
index 18d17ca13..9e9e03559 100644
--- a/code/ryzom/tools/leveldesign/mission_compiler_lib/steps.cpp
+++ b/code/ryzom/tools/leveldesign/mission_compiler_lib/steps.cpp
@@ -741,7 +741,7 @@ public:
 //		_TalkToMenu.initPhrase(md, prim, temp);
 
 		_TalkToObjective = NULL;
-		std::auto_ptr<CStepDynChatTalkTo> talkToObjective; // next calls could throw exceptions, so take care...
+		std::unique_ptr<CStepDynChatTalkTo> talkToObjective; // next calls could throw exceptions, so take care...
 		if (!temp.empty())
 		{
 			talkToObjective.reset(new CStepDynChatTalkTo(md, prim, "talk_to_"));
diff --git a/code/studio/src/plugins/object_viewer/particle_system/dup_ps.cpp b/code/studio/src/plugins/object_viewer/particle_system/dup_ps.cpp
index 0b04ff70b..3b2e6d69f 100644
--- a/code/studio/src/plugins/object_viewer/particle_system/dup_ps.cpp
+++ b/code/studio/src/plugins/object_viewer/particle_system/dup_ps.cpp
@@ -66,7 +66,7 @@ struct CDupObjPolicy
 		dest.serialPtr(obj);
 		/*if (dest.isReading())
 		{
-			std::auto_ptr<T> newObj(new T);
+			std::unique_ptr<T> newObj(new T);
 			newObj->serialPtr(dest);
 			delete obj;
 			obj = newObj.release();
@@ -111,7 +111,7 @@ NL3D::CParticleSystemProcess	*DupPSLocated(const CParticleSystemProcess *in)
 			/** Duplicate the system, and detach.
 			  * We can't duplicate the object direclty (it may be referencing other objects in the system, so these objects will be copied too...)
 			  */
-			std::auto_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(in->getOwner()));
+			std::unique_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(in->getOwner()));
 			// scene pointer is not serialised, but 'detach' may need the scene to be specified
 			newPS->setScene(in->getOwner()->getScene());
 			return newPS->detach(index);
@@ -141,7 +141,7 @@ NL3D::CPSLocatedBindable	*DupPSLocatedBindable(CPSLocatedBindable *in)
 		else
 		{
 			CParticleSystem *srcPS = in->getOwner()->getOwner();
-			std::auto_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(srcPS));
+			std::unique_ptr<CParticleSystem> newPS(DupSerializable<CDupObjPolicy>(srcPS));
 			// scene pointer is not serialised, but 'detach' may need the scene to be specified
 			newPS->setScene(in->getOwner()->getOwner()->getScene());
 			//
diff --git a/code/studio/src/plugins/object_viewer/particle_system/particle_editor.cpp b/code/studio/src/plugins/object_viewer/particle_system/particle_editor.cpp
index 12ea96c8a..38b46d439 100644
--- a/code/studio/src/plugins/object_viewer/particle_system/particle_editor.cpp
+++ b/code/studio/src/plugins/object_viewer/particle_system/particle_editor.cpp
@@ -105,7 +105,7 @@ NL3D::CParticleSystemModel *CParticleEditor::getModelFromPS(NL3D::CParticleSyste
 void CParticleEditor::loadWorkspace(const std::string &fullPath)
 {
 	// Add to the path
-	std::auto_ptr<CParticleWorkspace> newPW(new CParticleWorkspace);
+	std::unique_ptr<CParticleWorkspace> newPW(new CParticleWorkspace);
 	newPW->init(fullPath);
 
 	// save empty workspace
diff --git a/code/studio/src/plugins/object_viewer/particle_system/particle_node.cpp b/code/studio/src/plugins/object_viewer/particle_system/particle_node.cpp
index 684ca5fc4..c85e2e4b6 100644
--- a/code/studio/src/plugins/object_viewer/particle_system/particle_node.cpp
+++ b/code/studio/src/plugins/object_viewer/particle_system/particle_node.cpp
@@ -193,7 +193,7 @@ void CWorkspaceNode::createEmptyPS()
 	NL3D::CParticleSystem emptyPS;
 	NL3D::CParticleSystemShape *pss = new NL3D::CParticleSystemShape;
 	pss->buildFromPS(emptyPS);
-	std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
+	std::unique_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
 	std::string shapeName = NLMISC::CFile::getFilename(_RelativePath);
 	sb->add(shapeName, pss);
 	NL3D::CShapeBank *oldSB = Modules::psEdit().getScene()->getShapeBank();
@@ -272,7 +272,7 @@ bool CWorkspaceNode::loadPS() throw(NLMISC::EStream)
 	// collapse name
 	inputFile.open(getFullPath());
 	ss.serial(inputFile);
-	std::auto_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
+	std::unique_ptr<NL3D::CShapeBank> sb(new NL3D::CShapeBank);
 	std::string shapeName = NLMISC::CFile::getFilename(_RelativePath);
 	sb->add(shapeName, ss.getShapePointer());
 	NL3D::CShapeBank *oldSB = Modules::psEdit().getScene()->getShapeBank();
diff --git a/code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.h b/code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.h
index c7aa0e52b..7dfc4e781 100644
--- a/code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.h
+++ b/code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.h
@@ -123,8 +123,8 @@ private:
 	QAction *_lod2Action;
 	QAction *_externIDAction;
 
-	std::auto_ptr<NL3D::CPSLocated>	_LocatedCopy;
-	std::auto_ptr<NL3D::CPSLocatedBindable> _LocatedBindableCopy;
+	std::unique_ptr<NL3D::CPSLocated>	_LocatedCopy;
+	std::unique_ptr<NL3D::CPSLocatedBindable> _LocatedBindableCopy;
 
 	CParticleTreeItem *_currentItem;