Compare commits

..

1 Commits

Author SHA1 Message Date
nobody
d33a6b0d74 This commit was manufactured by cvs2svn to create tag
'Version_1_20_0'.

[SVN r8518]
2001-01-06 18:30:47 +00:00
2 changed files with 2 additions and 42 deletions

View File

@@ -9,7 +9,6 @@
// See http://www.boost.org for most recent version including documentation.
// Revision History
// 21 Jan 01 Suppress some useless warnings with MSVC (David Abrahams)
// 19 Oct 00 Make shared_ptr ctor from auto_ptr explicit. (Robert Vugts)
// 24 Jul 00 Change throw() to // never throws. See lib guidelines
// Exception-specification rationale. (Beman Dawes)
@@ -76,14 +75,7 @@ template<typename T> class scoped_ptr : noncopyable {
void reset( T* p=0 ) { if ( ptr != p ) { delete ptr; ptr = p; } }
T& operator*() const { return *ptr; } // never throws
#ifdef BOOST_MSVC
# pragma warning(push)
# pragma warning(disable:4284) // return type for 'identifier::operator->' is not a UDT or reference to a UDT. Will produce errors if applied using infix notation
#endif
T* operator->() const { return ptr; } // never throws
#ifdef BOOST_MSVC
# pragma warning(pop)
#endif
T* get() const { return ptr; } // never throws
#ifdef BOOST_SMART_PTR_CONVERSION
// get() is safer! Define BOOST_SMART_PTR_CONVERSION at your own risk!
@@ -212,14 +204,7 @@ template<typename T> class shared_ptr {
} // reset
T& operator*() const { return *px; } // never throws
#ifdef BOOST_MSVC
# pragma warning(push)
# pragma warning(disable:4284) // return type for 'identifier::operator->' is not a UDT or reference to a UDT. Will produce errors if applied using infix notation
#endif
T* operator->() const { return px; } // never throws
#ifdef BOOST_MSVC
# pragma warning(pop)
#endif
T* get() const { return px; } // never throws
#ifdef BOOST_SMART_PTR_CONVERSION
// get() is safer! Define BOOST_SMART_PTR_CONVERSION at your own risk!

View File

@@ -192,34 +192,9 @@ stored pointer.</p>
<p><code>void swap( shared_ptr&lt;T&gt;&amp; other ) throw()</code></p>
<p>Swaps the two smart pointers, as if by std::swap.</p>
<h2>Class <a name="shared_ptr_example">shared_ptr example</a></h2>
<pre>// The application will produce a series of
// objects of type Foo which later must be
// accessed both by occurrence (std::vector)
// and by ordering relationship (std::set).
class Foo { ... };
typedef boost::shared_ptr&lt;Foo&gt; FooPtr;
std::vector&lt;FooPtr&gt; foo_vector;
std::set&lt;FooPtr&gt; foo_set; // NOT multiset!
...
{ // creation loop
FooPtr foo_ptr ( new Foo( ... ) );
foo_vector.push_back( foo_ptr );
foo_set.insert( foo_ptr );
}</pre>
<p>Note that at the termination of the creation loop, some of the FooPtr objects
may have use_count()==1 rather than use_count()==2, since foo_set is a std::set
rather than a std::multiset.&nbsp; Furthermore, use_count() will be even higher
at various times inside the loop, as container operations are performed.&nbsp;
More complicated yet, the container operations may throw exceptions under a
variety of circumstances.&nbsp; Without using a smart pointer, memory and
exception management would be a nightmare.</p>
<p>[To be supplied. In the meantime, see <a href="smart_ptr_test.cpp">smart_ptr_test.cpp</a>.]</p>
<hr>
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->09 February, 2001<!--webbot bot="Timestamp" endspan i-checksum="40412" -->
</p>
<p>Revised December 8, 1999</p>
<p><EFBFBD> Copyright Greg Colvin and Beman Dawes 1999. Permission to copy, use,
modify, sell and distribute this document is granted provided this copyright
notice appears in all copies. This document is provided &quot;as is&quot;