mirror of
https://github.com/boostorg/smart_ptr.git
synced 2025-08-03 22:54:25 +02:00
Reuse code for plain and shared in ptr cast tests
This commit is contained in:
@@ -104,15 +104,9 @@ bool check_const_pointer_cast(const BasePtr &ptr)
|
|||||||
const_cast<const base*>(const_cast<base*>(boost::get_pointer(ptr)));
|
const_cast<const base*>(const_cast<base*>(boost::get_pointer(ptr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
template <class BasePtr>
|
||||||
|
void check_all_casts(const BasePtr &ptr)
|
||||||
int main()
|
|
||||||
{
|
{
|
||||||
{
|
|
||||||
// Try casts with shared_ptr
|
|
||||||
|
|
||||||
boost::shared_ptr<base> ptr(new derived);
|
|
||||||
|
|
||||||
#if !defined( BOOST_NO_RTTI )
|
#if !defined( BOOST_NO_RTTI )
|
||||||
BOOST_TEST( check_dynamic_pointer_cast( ptr ) );
|
BOOST_TEST( check_dynamic_pointer_cast( ptr ) );
|
||||||
#endif
|
#endif
|
||||||
@@ -120,17 +114,15 @@ int main()
|
|||||||
BOOST_TEST( check_const_pointer_cast( ptr ) );
|
BOOST_TEST( check_const_pointer_cast( ptr ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
// Try casts with raw pointer
|
|
||||||
|
|
||||||
boost::scoped_ptr<base> ptr(new derived);
|
|
||||||
|
|
||||||
#if !defined( BOOST_NO_RTTI )
|
|
||||||
BOOST_TEST( check_dynamic_pointer_cast( ptr.get() ) );
|
|
||||||
#endif
|
|
||||||
BOOST_TEST( check_static_pointer_cast( ptr.get() ) );
|
|
||||||
BOOST_TEST( check_const_pointer_cast( ptr.get() ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
boost::shared_ptr<base> boost_shared(new derived);
|
||||||
|
base *plain = boost_shared.get();
|
||||||
|
|
||||||
|
check_all_casts(boost_shared);
|
||||||
|
check_all_casts(plain);
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user