Full merge from trunk at revision 41356 of entire boost-root tree.

[SVN r41370]
This commit is contained in:
Beman Dawes
2007-11-25 18:38:02 +00:00
parent d2194e3b24
commit dba6ebbb01
10 changed files with 78 additions and 67 deletions

View File

@ -81,9 +81,8 @@
</ul> </ul>
<hr> <hr>
<p>Revised 1 February 2002</p> <p>Revised 1 February 2002</p>
<p>Copyright 2002 Darin Adler. Permission to copy, use, modify, sell and distribute <p><small>Copyright 2002 Darin Adler. Distributed under the Boost Software License, Version
this document is granted provided this copyright notice appears in all copies. 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
This document is provided "as is" without express or implied warranty, and with copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
no claim as to its suitability for any purpose.</p>
</body> </body>
</html> </html>

View File

@ -61,7 +61,8 @@
intrusive_ptr &amp; <A href="#assignment" >operator=</A>(intrusive_ptr const &amp; r); intrusive_ptr &amp; <A href="#assignment" >operator=</A>(intrusive_ptr const &amp; r);
template&lt;class Y&gt; intrusive_ptr &amp; <A href="#assignment" >operator=</A>(intrusive_ptr&lt;Y&gt; const &amp; r); template&lt;class Y&gt; intrusive_ptr &amp; <A href="#assignment" >operator=</A>(intrusive_ptr&lt;Y&gt; const &amp; r);
template&lt;class Y&gt; intrusive_ptr &amp; <A href="#assignment" >operator=</A>(T * r); intrusive_ptr &amp; <A href="#assignment" >operator=</A>(T * r);
void <a href="#reset" >reset</a>(T * r);
T &amp; <A href="#indirection" >operator*</A>() const; // never throws T &amp; <A href="#indirection" >operator*</A>() const; // never throws
T * <A href="#indirection" >operator-&gt;</A>() const; // never throws T * <A href="#indirection" >operator-&gt;</A>() const; // never throws
@ -146,6 +147,11 @@ intrusive_ptr &amp; operator=(T * r);</pre>
<P><B>Effects:</B> Equivalent to <code>intrusive_ptr(r).swap(*this)</code>.</P> <P><B>Effects:</B> Equivalent to <code>intrusive_ptr(r).swap(*this)</code>.</P>
<P><B>Returns:</B> <code>*this</code>.</P> <P><B>Returns:</B> <code>*this</code>.</P>
</BLOCKQUOTE> </BLOCKQUOTE>
<H3><a name="reset">reset</a></H3>
<pre>void reset(T * r);</pre>
<BLOCKQUOTE>
<P><B>Effects:</B> Equivalent to <code>intrusive_ptr(r).swap(*this)</code>.</P>
</BLOCKQUOTE>
<h3><a name="indirection">indirection</a></h3> <h3><a name="indirection">indirection</a></h3>
<pre>T &amp; operator*() const; // never throws</pre> <pre>T &amp; operator*() const; // never throws</pre>
<blockquote> <blockquote>

View File

@ -108,10 +108,9 @@
<hr> <hr>
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan--> <p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan-->
09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310"--></p> 09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310"--></p>
<p>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler. <p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
Copyright 2002-2005 Peter Dimov. Permission to copy, use, modify, sell and Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
distribute this document is granted provided this copyright notice appears in 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
all copies. This document is provided "as is" without express or implied copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
warranty, and with no claim as to its suitability for any purpose.</p>
</body> </body>
</html> </html>

View File

@ -173,10 +173,9 @@ Buckle my shoe</pre>
<hr> <hr>
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan --> <p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan -->
09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310" --></p> 09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310" --></p>
<p>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler. <p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
Copyright 2002-2005 Peter Dimov. Permission to copy, use, modify, sell and Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
distribute this document is granted provided this copyright notice appears in 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
all copies. This document is provided "as is" without express or implied copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
warranty, and with no claim as to its suitability for any purpose.</p>
</body> </body>
</html> </html>

View File

@ -177,10 +177,9 @@ template&lt;class T&gt;
<p>Revised <p>Revised
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan --> <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->
09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310" --></p> 09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310" --></p>
<p>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler. <p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
Copyright 2002-2005 Peter Dimov. Permission to copy, use, modify, sell and Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
distribute this document is granted provided this copyright notice appears in 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
all copies. This document is provided "as is" without express or implied copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
warranty, and with no claim as to its suitability for any purpose.</p>
</body> </body>
</html> </html>

View File

@ -111,6 +111,7 @@ void bad()
<A href="#constructors" >shared_ptr</A>(shared_ptr const &amp; r); // never throws <A href="#constructors" >shared_ptr</A>(shared_ptr const &amp; r); // never throws
template&lt;class Y&gt; <A href="#constructors" >shared_ptr</A>(shared_ptr&lt;Y&gt; const &amp; r); // never throws template&lt;class Y&gt; <A href="#constructors" >shared_ptr</A>(shared_ptr&lt;Y&gt; const &amp; r); // never throws
template&lt;class Y&gt; <A href="#constructors" >shared_ptr</A>(shared_ptr&lt;Y&gt; const &amp; r, T * p); // never throws
template&lt;class Y&gt; explicit <A href="#constructors" >shared_ptr</A>(<A href="weak_ptr.htm" >weak_ptr</A>&lt;Y&gt; const &amp; r); template&lt;class Y&gt; explicit <A href="#constructors" >shared_ptr</A>(<A href="weak_ptr.htm" >weak_ptr</A>&lt;Y&gt; const &amp; r);
template&lt;class Y&gt; explicit <A href="#constructors" >shared_ptr</A>(std::auto_ptr&lt;Y&gt; &amp; r); template&lt;class Y&gt; explicit <A href="#constructors" >shared_ptr</A>(std::auto_ptr&lt;Y&gt; &amp; r);
@ -122,6 +123,7 @@ void bad()
template&lt;class Y&gt; void <A href="#reset" >reset</A>(Y * p); template&lt;class Y&gt; void <A href="#reset" >reset</A>(Y * p);
template&lt;class Y, class D&gt; void <A href="#reset" >reset</A>(Y * p, D d); template&lt;class Y, class D&gt; void <A href="#reset" >reset</A>(Y * p, D d);
template&lt;class Y, class D, class A&gt; void <A href="#reset" >reset</A>(Y * p, D d, A a); template&lt;class Y, class D, class A&gt; void <A href="#reset" >reset</A>(Y * p, D d, A a);
template&lt;class Y&gt; void <A href="#reset" >reset</A>(shared_ptr&lt;Y&gt; const &amp; r, T * p); // never throws
T &amp; <A href="#indirection" >operator*</A>() const; // never throws T &amp; <A href="#indirection" >operator*</A>() const; // never throws
T * <A href="#indirection" >operator-&gt;</A>() const; // never throws T * <A href="#indirection" >operator-&gt;</A>() const; // never throws
@ -253,6 +255,13 @@ template&lt;class Y&gt; shared_ptr(shared_ptr&lt;Y&gt; const &amp; r); // never
r.use_count()</code>.</p> r.use_count()</code>.</p>
<p><b>Throws:</b> nothing.</p> <p><b>Throws:</b> nothing.</p>
</blockquote> </blockquote>
<pre>template&lt;class Y&gt; shared_ptr(shared_ptr&lt;Y&gt; const &amp; r, T * p); // never throws</pre>
<blockquote>
<p><b>Effects:</b> constructs a <b>shared_ptr</b> that <EM>shares ownership</EM> with
<b>r</b> and stores <b>p</b>.</p>
<p><b>Postconditions:</b> <code>get() == p &amp;&amp; use_count() == r.use_count()</code>.</p>
<p><b>Throws:</b> nothing.</p>
</blockquote>
<pre>template&lt;class Y&gt; explicit shared_ptr(<A href="weak_ptr.htm" >weak_ptr</A>&lt;Y&gt; const &amp; r);</pre> <pre>template&lt;class Y&gt; explicit shared_ptr(<A href="weak_ptr.htm" >weak_ptr</A>&lt;Y&gt; const &amp; r);</pre>
<blockquote> <blockquote>
<p><b>Effects:</b> Constructs a <b>shared_ptr</b> that <EM>shares ownership</EM> with <p><b>Effects:</b> Constructs a <b>shared_ptr</b> that <EM>shares ownership</EM> with
@ -328,6 +337,10 @@ q = p;
<BLOCKQUOTE> <BLOCKQUOTE>
<P><B>Effects:</B> Equivalent to <code>shared_ptr(p, d, a).swap(*this)</code>.</P> <P><B>Effects:</B> Equivalent to <code>shared_ptr(p, d, a).swap(*this)</code>.</P>
</BLOCKQUOTE> </BLOCKQUOTE>
<pre>template&lt;class Y&gt; void reset(shared_ptr&lt;Y&gt; const &amp; r, T * p); // never throws</pre>
<BLOCKQUOTE>
<P><B>Effects:</B> Equivalent to <code>shared_ptr(r, p).swap(*this)</code>.</P>
</BLOCKQUOTE>
<h3><a name="indirection">indirection</a></h3> <h3><a name="indirection">indirection</a></h3>
<pre>T &amp; operator*() const; // never throws</pre> <pre>T &amp; operator*() const; // never throws</pre>
<blockquote> <blockquote>
@ -696,9 +709,8 @@ int * p = a.release();
<p> <p>
$Date$</p> $Date$</p>
<p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler. <p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
Copyright 2002-2005 Peter Dimov. Permission to copy, use, modify, sell and Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
distribute this document is granted provided this copyright notice appears in 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
all copies. This document is provided "as is" without express or implied copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
warranty, and with no claim as to its suitability for any purpose.</small></p>
</body> </body>
</html> </html>

View File

@ -177,10 +177,9 @@
and an extensive bibliography.</p> and an extensive bibliography.</p>
<hr> <hr>
<p>$Date$</p> <p>$Date$</p>
<p>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler. <p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
Permission to copy, use, modify, sell and distribute this document is granted Distributed under the Boost Software License, Version 1.0. See accompanying
provided this copyright notice appears in all copies. This document is provided file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or copy at
"as is" without express or implied warranty, and with no claim as to its <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
suitability for any purpose.</p>
</body> </body>
</html> </html>

View File

@ -1,6 +1,6 @@
# Boost.SmartPtr Library test Jamfile # Boost.SmartPtr Library test Jamfile
# #
# Copyright (c) 2003-2005 Peter Dimov # Copyright (c) 2003-2007 Peter Dimov
# Copyright (c) 2003 Dave Abrahams # Copyright (c) 2003 Dave Abrahams
# #
# Distributed under the Boost Software License, Version 1.0. (See # Distributed under the Boost Software License, Version 1.0. (See
@ -23,9 +23,15 @@ import testing ;
[ run lw_mutex_test.cpp ] [ run lw_mutex_test.cpp ]
[ compile-fail shared_ptr_assign_fail.cpp ] [ compile-fail shared_ptr_assign_fail.cpp ]
[ compile-fail shared_ptr_delete_fail.cpp ] [ compile-fail shared_ptr_delete_fail.cpp ]
[ compile-fail shared_ptr_compare_fail.cpp ]
[ run shared_ptr_alloc2_test.cpp ] [ run shared_ptr_alloc2_test.cpp ]
[ run pointer_cast_test.cpp ] [ run pointer_cast_test.cpp ]
[ compile pointer_to_other_test.cpp ] [ compile pointer_to_other_test.cpp ]
[ run auto_ptr_rv_test.cpp ] [ run auto_ptr_rv_test.cpp ]
[ run shared_ptr_alias_test.cpp ]
[ run shared_ptr_rv_test.cpp ]
[ run shared_ptr_move_test.cpp ]
[ compile-fail shared_ptr_pv_fail.cpp ]
[ run sp_unary_addr_test.cpp ]
; ;
} }

View File

@ -40,9 +40,9 @@
#include <boost/detail/lightweight_test.hpp> #include <boost/detail/lightweight_test.hpp>
#include <cstring>
#include <iostream> #include <iostream>
#include <set> #include <set>
#include <string.h>
class Incomplete; class Incomplete;
@ -51,12 +51,6 @@ Incomplete * get_ptr( boost::shared_ptr<Incomplete>& incomplete )
return incomplete.get(); return incomplete.get();
} }
using namespace std;
using boost::scoped_ptr;
using boost::scoped_array;
using boost::shared_ptr;
using boost::shared_array;
template<class T> template<class T>
void ck( const T* v1, T v2 ) { BOOST_TEST( *v1 == v2 ); } void ck( const T* v1, T v2 ) { BOOST_TEST( *v1 == v2 ); }
@ -72,7 +66,7 @@ class UDT {
explicit UDT( long value=0 ) : value_(value) { ++UDT_use_count; } explicit UDT( long value=0 ) : value_(value) { ++UDT_use_count; }
~UDT() { ~UDT() {
--UDT_use_count; --UDT_use_count;
cout << "UDT with value " << value_ << " being destroyed\n"; std::cout << "UDT with value " << value_ << " being destroyed\n";
} }
long value() const { return value_; } long value() const { return value_; }
void value( long v ) { value_ = v;; } void value( long v ) { value_ = v;; }
@ -86,16 +80,16 @@ class UDT {
class Incomplete; class Incomplete;
Incomplete * check_incomplete( scoped_ptr<Incomplete>& incomplete ) Incomplete * check_incomplete( boost::scoped_ptr<Incomplete>& incomplete )
{ {
return incomplete.get(); return incomplete.get();
} }
Incomplete * check_incomplete( shared_ptr<Incomplete>& incomplete, Incomplete * check_incomplete( boost::shared_ptr<Incomplete>& incomplete,
shared_ptr<Incomplete>& i2 ) boost::shared_ptr<Incomplete>& i2 )
{ {
incomplete.swap(i2); incomplete.swap(i2);
cout << incomplete.use_count() << ' ' << incomplete.unique() << '\n'; std::cout << incomplete.use_count() << ' ' << incomplete.unique() << '\n';
return incomplete.get(); return incomplete.get();
} }
@ -107,7 +101,7 @@ void test()
// test scoped_ptr with a built-in type // test scoped_ptr with a built-in type
long * lp = new long; long * lp = new long;
scoped_ptr<long> sp ( lp ); boost::scoped_ptr<long> sp ( lp );
BOOST_TEST( sp.get() == lp ); BOOST_TEST( sp.get() == lp );
BOOST_TEST( lp == sp.get() ); BOOST_TEST( lp == sp.get() );
BOOST_TEST( &*sp == lp ); BOOST_TEST( &*sp == lp );
@ -122,7 +116,7 @@ void test()
BOOST_TEST( sp.get() == 0 ); BOOST_TEST( sp.get() == 0 );
// test scoped_ptr with a user defined type // test scoped_ptr with a user defined type
scoped_ptr<UDT> udt_sp ( new UDT( 999888777 ) ); boost::scoped_ptr<UDT> udt_sp ( new UDT( 999888777 ) );
BOOST_TEST( udt_sp->value() == 999888777 ); BOOST_TEST( udt_sp->value() == 999888777 );
udt_sp.reset(); udt_sp.reset();
udt_sp.reset( new UDT( 111222333 ) ); udt_sp.reset( new UDT( 111222333 ) );
@ -132,7 +126,7 @@ void test()
// test scoped_array with a build-in type // test scoped_array with a build-in type
char * sap = new char [ 100 ]; char * sap = new char [ 100 ];
scoped_array<char> sa ( sap ); boost::scoped_array<char> sa ( sap );
BOOST_TEST( sa.get() == sap ); BOOST_TEST( sa.get() == sap );
BOOST_TEST( sap == sa.get() ); BOOST_TEST( sap == sa.get() );
@ -152,7 +146,7 @@ void test()
// test shared_ptr with a built-in type // test shared_ptr with a built-in type
int * ip = new int; int * ip = new int;
shared_ptr<int> cp ( ip ); boost::shared_ptr<int> cp ( ip );
BOOST_TEST( ip == cp.get() ); BOOST_TEST( ip == cp.get() );
BOOST_TEST( cp.use_count() == 1 ); BOOST_TEST( cp.use_count() == 1 );
@ -162,7 +156,7 @@ void test()
ck( static_cast<int*>(cp.get()), 54321 ); ck( static_cast<int*>(cp.get()), 54321 );
ck( static_cast<int*>(ip), *cp ); ck( static_cast<int*>(ip), *cp );
shared_ptr<int> cp2 ( cp ); boost::shared_ptr<int> cp2 ( cp );
BOOST_TEST( ip == cp2.get() ); BOOST_TEST( ip == cp2.get() );
BOOST_TEST( cp.use_count() == 2 ); BOOST_TEST( cp.use_count() == 2 );
BOOST_TEST( cp2.use_count() == 2 ); BOOST_TEST( cp2.use_count() == 2 );
@ -172,7 +166,7 @@ void test()
ck( static_cast<int*>(cp2.get()), 54321 ); ck( static_cast<int*>(cp2.get()), 54321 );
ck( static_cast<int*>(ip), *cp2 ); ck( static_cast<int*>(ip), *cp2 );
shared_ptr<int> cp3 ( cp ); boost::shared_ptr<int> cp3 ( cp );
BOOST_TEST( cp.use_count() == 3 ); BOOST_TEST( cp.use_count() == 3 );
BOOST_TEST( cp2.use_count() == 3 ); BOOST_TEST( cp2.use_count() == 3 );
BOOST_TEST( cp3.use_count() == 3 ); BOOST_TEST( cp3.use_count() == 3 );
@ -202,20 +196,20 @@ void test()
BOOST_TEST( cp.use_count() == 3 ); BOOST_TEST( cp.use_count() == 3 );
BOOST_TEST( *cp == 87654 ); BOOST_TEST( *cp == 87654 );
shared_ptr<int> cp4; boost::shared_ptr<int> cp4;
swap( cp2, cp4 ); swap( cp2, cp4 );
BOOST_TEST( cp4.use_count() == 3 ); BOOST_TEST( cp4.use_count() == 3 );
BOOST_TEST( *cp4 == 87654 ); BOOST_TEST( *cp4 == 87654 );
BOOST_TEST( cp2.get() == 0 ); BOOST_TEST( cp2.get() == 0 );
set< shared_ptr<int> > scp; std::set< boost::shared_ptr<int> > scp;
scp.insert(cp4); scp.insert(cp4);
BOOST_TEST( scp.find(cp4) != scp.end() ); BOOST_TEST( scp.find(cp4) != scp.end() );
BOOST_TEST( scp.find(cp4) == scp.find( shared_ptr<int>(cp4) ) ); BOOST_TEST( scp.find(cp4) == scp.find( boost::shared_ptr<int>(cp4) ) );
// test shared_array with a built-in type // test shared_array with a built-in type
char * cap = new char [ 100 ]; char * cap = new char [ 100 ];
shared_array<char> ca ( cap ); boost::shared_array<char> ca ( cap );
BOOST_TEST( ca.get() == cap ); BOOST_TEST( ca.get() == cap );
BOOST_TEST( cap == ca.get() ); BOOST_TEST( cap == ca.get() );
BOOST_TEST( &ca[0] == cap ); BOOST_TEST( &ca[0] == cap );
@ -227,8 +221,8 @@ void test()
BOOST_TEST( ca[0] == 'H' ); BOOST_TEST( ca[0] == 'H' );
BOOST_TEST( ca[30] == 'h' ); BOOST_TEST( ca[30] == 'h' );
shared_array<char> ca2 ( ca ); boost::shared_array<char> ca2 ( ca );
shared_array<char> ca3 ( ca2 ); boost::shared_array<char> ca3 ( ca2 );
ca[0] = 'N'; ca[0] = 'N';
ca[4] = 'd'; ca[4] = 'd';
@ -246,24 +240,24 @@ void test()
ca.reset(); ca.reset();
BOOST_TEST( ca.get() == 0 ); BOOST_TEST( ca.get() == 0 );
shared_array<char> ca4; boost::shared_array<char> ca4;
swap( ca3, ca4 ); swap( ca3, ca4 );
BOOST_TEST( ca4.use_count() == 1 ); BOOST_TEST( ca4.use_count() == 1 );
BOOST_TEST( strcmp( ca4.get(), "Not dog with mustard and relish" ) == 0 ); BOOST_TEST( strcmp( ca4.get(), "Not dog with mustard and relish" ) == 0 );
BOOST_TEST( ca3.get() == 0 ); BOOST_TEST( ca3.get() == 0 );
set< shared_array<char> > sca; std::set< boost::shared_array<char> > sca;
sca.insert(ca4); sca.insert(ca4);
BOOST_TEST( sca.find(ca4) != sca.end() ); BOOST_TEST( sca.find(ca4) != sca.end() );
BOOST_TEST( sca.find(ca4) == sca.find( shared_array<char>(ca4) ) ); BOOST_TEST( sca.find(ca4) == sca.find( boost::shared_array<char>(ca4) ) );
// test shared_array with user defined type // test shared_array with user defined type
shared_array<UDT> udta ( new UDT[3] ); boost::shared_array<UDT> udta ( new UDT[3] );
udta[0].value( 111 ); udta[0].value( 111 );
udta[1].value( 222 ); udta[1].value( 222 );
udta[2].value( 333 ); udta[2].value( 333 );
shared_array<UDT> udta2 ( udta ); boost::shared_array<UDT> udta2 ( udta );
BOOST_TEST( udta[0].value() == 111 ); BOOST_TEST( udta[0].value() == 111 );
BOOST_TEST( udta[1].value() == 222 ); BOOST_TEST( udta[1].value() == 222 );
@ -280,7 +274,7 @@ void test()
// test shared_ptr with a user defined type // test shared_ptr with a user defined type
UDT * up = new UDT; UDT * up = new UDT;
shared_ptr<UDT> sup ( up ); boost::shared_ptr<UDT> sup ( up );
BOOST_TEST( up == sup.get() ); BOOST_TEST( up == sup.get() );
BOOST_TEST( sup.use_count() == 1 ); BOOST_TEST( sup.use_count() == 1 );
@ -288,7 +282,7 @@ void test()
BOOST_TEST( sup->value() == 54321 ); BOOST_TEST( sup->value() == 54321 );
BOOST_TEST( up->value() == 54321 ); BOOST_TEST( up->value() == 54321 );
shared_ptr<UDT> sup2; boost::shared_ptr<UDT> sup2;
sup2 = sup; sup2 = sup;
BOOST_TEST( sup2->value() == 54321 ); BOOST_TEST( sup2->value() == 54321 );
BOOST_TEST( sup.use_count() == 2 ); BOOST_TEST( sup.use_count() == 2 );
@ -298,7 +292,7 @@ void test()
BOOST_TEST( sup.use_count() == 2 ); BOOST_TEST( sup.use_count() == 2 );
BOOST_TEST( sup2.use_count() == 2 ); BOOST_TEST( sup2.use_count() == 2 );
cout << "OK\n"; std::cout << "OK\n";
new char[12345]; // deliberate memory leak to verify leaks detected new char[12345]; // deliberate memory leak to verify leaks detected
} }

View File

@ -235,10 +235,8 @@ public:
<hr> <hr>
<p>$Date$</p> <p>$Date$</p>
<p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler. <p><small>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
Copyright 2002-2005 Peter Dimov. Permission to copy, use, modify, sell and Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
distribute this document is granted provided this copyright notice appears in 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
all copies. This document is provided "as is" without express or implied copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
warranty, and with no claim as to its suitability for any purpose.</small></p>
</A>
</body> </body>
</html> </html>