forked from boostorg/smart_ptr
Merged revision(s) 81730-81731, 81776 from trunk:
Fix get_pointer for the array case, add operator= for unique_ptr, update auto_ptr signatures to use rvalue reference when available. ........ Update shared_ptr.htm. ........ Add more unique_ptr tests. ........ [SVN r81781]
This commit is contained in:
@@ -91,6 +91,66 @@ int main()
|
||||
p2.reset();
|
||||
p3.reset();
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
|
||||
p2 = std::unique_ptr<X>( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
p2 = std::unique_ptr<X>( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
}
|
||||
|
||||
{
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
|
||||
std::unique_ptr<X> p( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
boost::shared_ptr<X const> p2( std::move( p ) );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
BOOST_TEST( p.get() == 0 );
|
||||
|
||||
boost::shared_ptr<X const> p3 = p2->shared_from_this();
|
||||
BOOST_TEST( p2 == p3 );
|
||||
BOOST_TEST( !(p2 < p3) && !(p3 < p2) );
|
||||
|
||||
p2.reset();
|
||||
p3.reset();
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
|
||||
p2 = std::unique_ptr<X>( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
p2 = std::unique_ptr<X>( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
}
|
||||
|
||||
{
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
|
||||
std::unique_ptr<X> p( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
boost::shared_ptr<void> p2( std::move( p ) );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
BOOST_TEST( p.get() == 0 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
|
||||
p2 = std::unique_ptr<X>( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
p2 = std::unique_ptr<X>( new X );
|
||||
BOOST_TEST( X::instances == 1 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( X::instances == 0 );
|
||||
}
|
||||
|
||||
{
|
||||
@@ -105,6 +165,15 @@ int main()
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( Y::instances == 0 );
|
||||
|
||||
p2 = std::unique_ptr<Y, YD>( new Y, YD() );
|
||||
BOOST_TEST( Y::instances == 1 );
|
||||
|
||||
p2 = std::unique_ptr<Y, YD>( new Y, YD() );
|
||||
BOOST_TEST( Y::instances == 1 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( Y::instances == 0 );
|
||||
}
|
||||
|
||||
{
|
||||
@@ -121,6 +190,15 @@ int main()
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( Y::instances == 0 );
|
||||
|
||||
p2 = std::unique_ptr<Y, YD&>( new Y, yd );
|
||||
BOOST_TEST( Y::instances == 1 );
|
||||
|
||||
p2 = std::unique_ptr<Y, YD&>( new Y, yd );
|
||||
BOOST_TEST( Y::instances == 1 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( Y::instances == 0 );
|
||||
}
|
||||
|
||||
{
|
||||
@@ -137,6 +215,15 @@ int main()
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( Y::instances == 0 );
|
||||
|
||||
p2 = std::unique_ptr<Y, YD const&>( new Y, yd );
|
||||
BOOST_TEST( Y::instances == 1 );
|
||||
|
||||
p2 = std::unique_ptr<Y, YD const&>( new Y, yd );
|
||||
BOOST_TEST( Y::instances == 1 );
|
||||
|
||||
p2.reset();
|
||||
BOOST_TEST( Y::instances == 0 );
|
||||
}
|
||||
|
||||
return boost::report_errors();
|
||||
|
||||
Reference in New Issue
Block a user