Add a self-assignment assert to reset(). Also add an overload of reset to

allow resetting to a new pointer with a new deletion function.


[SVN r12491]
This commit is contained in:
Darin Adler committed 2002-01-24 19:16:12 +00:00
1 parent 09c1476063
commit 5d564a2f01
4 files changed
+10 -1

No files matched your search

+7 -1
View File
@@ -33,7 +33,7 @@
#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
# pragma warning(push)
# pragma warning(disable:4284) // odd return type for operator->
#endif
#endif
namespace boost
{
@@ -144,9 +144,15 @@ public:
void reset(T * p = 0)
{
BOOST_ASSERT(p == 0 || p != px);
this_type(p).swap(*this);
}
template<typename D> void reset(T * p, D d)
{
this_type(p, d).swap(*this);
}
typename detail::shared_ptr_traits<T>::reference operator* () const // never throws
{
BOOST_ASSERT(px != 0);