forked from boostorg/smart_ptr
Add more tests; fix errors
This commit is contained in:
@@ -766,6 +766,10 @@ public:
|
||||
return ti == BOOST_SP_TYPEID(deleter_type)? &reinterpret_cast<char&>(deleter_): 0;
|
||||
}
|
||||
|
||||
void* get_local_deleter(const sp_typeinfo&) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* get_untyped_deleter() {
|
||||
return &reinterpret_cast<char&>(deleter_);
|
||||
}
|
||||
@@ -807,6 +811,10 @@ public:
|
||||
return ti == BOOST_SP_TYPEID(deleter_type)? &reinterpret_cast<char&>(deleter_): 0;
|
||||
}
|
||||
|
||||
void* get_local_deleter(const sp_typeinfo&) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* get_untyped_deleter() {
|
||||
return &reinterpret_cast<char&>(deleter_);
|
||||
}
|
||||
@@ -853,6 +861,10 @@ public:
|
||||
return ti == BOOST_SP_TYPEID(deleter_type)? &reinterpret_cast<char&>(deleter_): 0;
|
||||
}
|
||||
|
||||
void* get_local_deleter(const sp_typeinfo&) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* get_untyped_deleter() {
|
||||
return &reinterpret_cast<char&>(deleter_);
|
||||
}
|
||||
@@ -898,6 +910,10 @@ public:
|
||||
return ti == BOOST_SP_TYPEID(deleter_type)? &reinterpret_cast<char&>(deleter_): 0;
|
||||
}
|
||||
|
||||
void* get_local_deleter(const sp_typeinfo&) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* get_untyped_deleter() {
|
||||
return &reinterpret_cast<char&>(deleter_);
|
||||
}
|
||||
|
||||
@@ -70,9 +70,18 @@ public:
|
||||
#endif
|
||||
};
|
||||
|
||||
template<> class local_sp_deleter<void>
|
||||
{
|
||||
};
|
||||
|
||||
template<class D> D * get_local_deleter( local_sp_deleter<D> * p )
|
||||
{
|
||||
return &p->deleter();
|
||||
return &p->deleter();
|
||||
}
|
||||
|
||||
inline void * get_local_deleter( local_sp_deleter<void> * /*p*/ )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <boost/checked_delete.hpp>
|
||||
#include <boost/smart_ptr/detail/sp_counted_base.hpp>
|
||||
#include <boost/core/addressof.hpp>
|
||||
|
||||
#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
|
||||
#include <boost/smart_ptr/detail/quick_allocator.hpp>
|
||||
@@ -54,7 +55,7 @@ namespace detail
|
||||
|
||||
template<class D> class local_sp_deleter;
|
||||
|
||||
template<class D> D * get_local_deleter( D * p )
|
||||
template<class D> D * get_local_deleter( D * /*p*/ )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -178,7 +179,7 @@ public:
|
||||
|
||||
virtual void * get_local_deleter( sp_typeinfo const & ti )
|
||||
{
|
||||
return ti == BOOST_SP_TYPEID(D)? boost::detail::get_local_deleter( &reinterpret_cast<char&>( del ) ): 0;
|
||||
return ti == BOOST_SP_TYPEID(D)? boost::detail::get_local_deleter( boost::addressof( del ) ): 0;
|
||||
}
|
||||
|
||||
virtual void * get_untyped_deleter()
|
||||
@@ -271,7 +272,7 @@ public:
|
||||
|
||||
virtual void * get_local_deleter( sp_typeinfo const & ti )
|
||||
{
|
||||
return ti == BOOST_SP_TYPEID(D)? boost::detail::get_local_deleter( &reinterpret_cast<char&>( d_ ) ): 0;
|
||||
return ti == BOOST_SP_TYPEID(D)? boost::detail::get_local_deleter( boost::addressof( d_ ) ): 0;
|
||||
}
|
||||
|
||||
virtual void * get_untyped_deleter()
|
||||
|
||||
@@ -28,12 +28,12 @@ template<class T> struct lsp_if_array
|
||||
|
||||
template<class T> struct lsp_if_array<T[]>
|
||||
{
|
||||
typedef boost::local_shared_ptr<T> type;
|
||||
typedef boost::local_shared_ptr<T[]> type;
|
||||
};
|
||||
|
||||
template<class T, std::size_t N> struct lsp_if_array<T[N]>
|
||||
{
|
||||
typedef boost::local_shared_ptr<T> type;
|
||||
typedef boost::local_shared_ptr<T[N]> type;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
Reference in New Issue
Block a user