Made the Boost logo link to the home page

[SVN r31112]
This commit is contained in:
Peter Dimov
2005-09-25 21:54:19 +00:00
parent 235994873f
commit 7880720bc1
7 changed files with 98 additions and 115 deletions

View File

@ -1,105 +1,89 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Smart Pointer Changes</title> <title>Smart Pointer Changes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body bgcolor="#ffffff" text="#000000">
<body bgcolor="#FFFFFF" text="#000000"> <h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
border="0"></A>Smart Pointer Changes</h1>
<h1><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86">Smart <p>The February 2002 change to the Boost smart pointers introduced a number of
Pointer Changes</h1> changes. Since the previous version of the smart pointers was in use for a long
time, it's useful to have a detailed list of what changed from a library user's
<p>The February 2002 change to the Boost smart pointers introduced a number point of view.</p>
of changes. Since the previous version of the smart pointers was in use for <p>Note that for compilers that don't support member templates well enough, a
a long time, it's useful to have a detailed list of what changed from a library separate implementation is used that lacks many of the new features and is more
user's point of view.</p> like the old version.</p>
<p>Note that for compilers that don't support member templates well enough,
a separate implementation is used that lacks many of the new features and is
more like the old version.</p>
<h2>Features Requiring Code Changes to Take Advantage</h2> <h2>Features Requiring Code Changes to Take Advantage</h2>
<ul> <ul>
<li>
<li>The smart pointer class templates now each have their own header file. The smart pointer class templates now each have their own header file. For
For compatibility, the compatibility, the <a href="../../boost/smart_ptr.hpp">&lt;boost/smart_ptr.hpp&gt;</a>
<a href="../../boost/smart_ptr.hpp">&lt;boost/smart_ptr.hpp&gt;</a> header now includes the headers for the four classic smart pointer class
header now includes the headers for the four classic smart pointer class templates.</li> templates.
<li>
<li>The <b>weak_ptr</b> template was added.</li> The <b>weak_ptr</b>
template was added.
<li>The new <b>shared_ptr</b> and <b>shared_array</b> relax the requirement that the pointed-to object's <li>
destructor must be visible when instantiating the <b>shared_ptr</b> destructor. The new <b>shared_ptr</b> and <b>shared_array</b> relax the requirement that
This makes it easier to have shared_ptr members in classes without explicit destructors.</li> the pointed-to object's destructor must be visible when instantiating the <b>shared_ptr</b>
destructor. This makes it easier to have shared_ptr members in classes without
<li>A custom deallocator can be passed in when creating a <b>shared_ptr</b> or <b>shared_array</b>.</li> explicit destructors.
<li>
<li><b>shared_static_cast</b> and <b>shared_dynamic_cast</b> function templates are A custom deallocator can be passed in when creating a <b>shared_ptr</b> or <b>shared_array</b>.
provided which work for <b>shared_ptr</b> and <b>weak_ptr</b> as <b>static_cast</b> and <li>
<b>dynamic_cast</b> do for pointers.</li> <b>shared_static_cast</b> and <b>shared_dynamic_cast</b> function templates are
provided which work for <b>shared_ptr</b> and <b>weak_ptr</b> as <b>static_cast</b>
<li>The self-assignment misfeature has been removed from <b>shared_ptr::reset</b>, and <b>dynamic_cast</b>
do for pointers.
<li>
The self-assignment misfeature has been removed from <b>shared_ptr::reset</b>,
although it is still present in <b>scoped_ptr</b>, and in <b>std::auto_ptr</b>. although it is still present in <b>scoped_ptr</b>, and in <b>std::auto_ptr</b>.
Calling <b>reset</b> with a pointer to the object that's already owned by the Calling <b>reset</b> with a pointer to the object that's already owned by the <b>shared_ptr</b>
<b>shared_ptr</b> results in undefined behavior results in undefined behavior (an assertion, or eventually a double-delete if
(an assertion, or eventually a double-delete if assertions are off).</li> assertions are off).
<li>
<li>The <b>BOOST_SMART_PTR_CONVERSION</b> feature has been removed.</li> The <b>BOOST_SMART_PTR_CONVERSION</b>
feature has been removed.
<li><b>shared_ptr&lt;void&gt;</b> is now allowed.</li> <li>
<b>shared_ptr&lt;void&gt;</b> is now allowed.</li>
</ul> </ul>
<h2>Features That Improve Robustness</h2> <h2>Features That Improve Robustness</h2>
<ul> <ul>
<li>
<li>The manipulation of use counts is now <a name="threadsafe">thread safe</a> on Windows, Linux, and platforms The manipulation of use counts is now <a name="threadsafe">thread safe</a> on
that support pthreads. See the Windows, Linux, and platforms that support pthreads. See the <a href="../../boost/detail/atomic_count.hpp">
<a href="../../boost/detail/atomic_count.hpp">&lt;boost/detail/atomic_count.hpp&gt;</a> &lt;boost/detail/atomic_count.hpp&gt;</a>
file for details</li> file for details
<li>
<li>The new shared_ptr will always delete the object using the pointer it was originally constructed with. The new shared_ptr will always delete the object using the pointer it was
This prevents subtle problems that could happen if the last <b>shared_ptr</b> was a pointer to a sub-object originally constructed with. This prevents subtle problems that could happen if
of a class that did not have a virtual destructor.</li> the last <b>shared_ptr</b> was a pointer to a sub-object of a class that did
not have a virtual destructor.</li>
</ul> </ul>
<h2>Implementation Details</h2> <h2>Implementation Details</h2>
<ul> <ul>
<li>
<li>Some bugs in the assignment operator implementations and in <b>reset</b> Some bugs in the assignment operator implementations and in <b>reset</b>
have been fixed by using the &quot;copy and swap&quot; idiom.</li> have been fixed by using the "copy and swap" idiom.
<li>
<li>Assertions have been added to check preconditions of various functions; Assertions have been added to check preconditions of various functions;
however, since these use the new however, since these use the new <a href="../../boost/assert.hpp">&lt;boost/assert.hpp&gt;</a>
<a href="../../boost/assert.hpp">&lt;boost/assert.hpp&gt;</a> header, the assertions are disabled by default.
header, the assertions are disabled by default.</li> <li>
The partial specialization of <b>std::less</b> has been replaced by <b>operator&lt;</b>
<li>The partial specialization of <b>std::less</b> has been replaced by <b>operator&lt;</b> overloads which accomplish the same thing without relying on undefined
overloads which accomplish the same thing without relying on undefined behavior.</li> behavior.
<li>
<li>The incorrect overload of <b>std::swap</b> has been replaced by <b>boost::swap</b>, which The incorrect overload of <b>std::swap</b> has been replaced by <b>boost::swap</b>,
has many of the same advantages for generic programming but does not violate the C++ standard.</li> which has many of the same advantages for generic programming but does not
violate the C++ standard.</li>
</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>Copyright 2002 Darin Adler. this document is granted provided this copyright notice appears in all copies.
Permission to copy, use, This document is provided "as is" without express or implied warranty, and with
modify, sell and distribute this document is granted provided this copyright no claim as to its suitability for any purpose.</p>
notice appears in all copies. This document is provided &quot;as is&quot;
without express or implied warranty, and with no claim as to its suitability for
any purpose.</p>
</body> </body>
</html> </html>

View File

@ -7,10 +7,9 @@
<body bgcolor="white" style="MARGIN-LEFT: 5%; MARGIN-RIGHT: 5%"> <body bgcolor="white" style="MARGIN-LEFT: 5%; MARGIN-RIGHT: 5%">
<table border="0" width="100%"> <table border="0" width="100%">
<tr> <tr>
<td width="277"> <td width="277"><A href="../../index.htm"> <img src="../../boost.png" alt="boost.png (6897 bytes)" width="277" height="86" border="0"></A>
<img src="../../boost.png" alt="boost.png (6897 bytes)" width="277" height="86">
</td> </td>
<td align="middle"> <td align="center">
<h1>enable_shared_from_this.hpp</h1> <h1>enable_shared_from_this.hpp</h1>
</td> </td>
</tr> </tr>

View File

@ -5,7 +5,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body text="#000000" bgColor="#ffffff"> <body text="#000000" bgColor="#ffffff">
<h1><A href="../.."><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle" <h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
border="0"></A>intrusive_ptr class template</h1> border="0"></A>intrusive_ptr class template</h1>
<p> <p>
<A href="#Introduction">Introduction</A><br> <A href="#Introduction">Introduction</A><br>

View File

@ -5,8 +5,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body text="#000000" bgColor="#ffffff"> <body text="#000000" bgColor="#ffffff">
<h1><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle">shared_ptr <h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
class template</h1> border="0"></A>shared_ptr class template</h1>
<p><A href="#Introduction">Introduction</A><br> <p><A href="#Introduction">Introduction</A><br>
<A href="#BestPractices">Best Practices</A><br> <A href="#BestPractices">Best Practices</A><br>
<A href="#Synopsis">Synopsis</A><br> <A href="#Synopsis">Synopsis</A><br>
@ -621,7 +621,7 @@ p3.reset(new int(2)); // undefined, multiple writes
day a highly configurable smart pointer may be invented that is also very easy day a highly configurable smart pointer may be invented that is also very easy
to use and very hard to misuse. Until then, <B>shared_ptr</B> is the smart to use and very hard to misuse. Until then, <B>shared_ptr</B> is the smart
pointer of choice for a wide range of applications. (Those interested in policy pointer of choice for a wide range of applications. (Those interested in policy
based smart pointers should read <A href="http://www.awprofessional.com/bookstore/product.asp?isbn=0201704315&rl=1"> based smart pointers should read <A href="http://www.awprofessional.com/bookstore/product.asp?isbn=0201704315&amp;rl=1">
Modern C++ Design</A> by Andrei Alexandrescu.)<BR> Modern C++ Design</A> by Andrei Alexandrescu.)<BR>
</P> </P>
<P><B>Q.</B> I am not convinced. Default parameters can be used where appropriate <P><B>Q.</B> I am not convinced. Default parameters can be used where appropriate

View File

@ -5,8 +5,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body bgcolor="#ffffff" text="#000000"> <body bgcolor="#ffffff" text="#000000">
<h1><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86">Smart <h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
Pointers</h1> border="0"></A>Smart Pointers</h1>
<p><a href="#Introduction">Introduction</a><br> <p><a href="#Introduction">Introduction</a><br>
<a href="#common_requirements">Common Requirements</a><br> <a href="#common_requirements">Common Requirements</a><br>
<a href="#Exception_Safety">Exception Safety</a><br> <a href="#Exception_Safety">Exception Safety</a><br>

View File

@ -5,8 +5,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body text="#000000" bgColor="#ffffff"> <body text="#000000" bgColor="#ffffff">
<h1><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle">Smart <h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
Pointer Programming Techniques</h1> border="0"></A>Smart Pointer Programming Techniques</h1>
<p><A href="#incomplete">Using incomplete classes for implementation hiding</A><br> <p><A href="#incomplete">Using incomplete classes for implementation hiding</A><br>
<A href="#pimpl">The "Pimpl" idiom</A><br> <A href="#pimpl">The "Pimpl" idiom</A><br>
<A href="#abstract">Using abstract classes for implementation hiding</A><br> <A href="#abstract">Using abstract classes for implementation hiding</A><br>

View File

@ -5,8 +5,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body text="#000000" bgColor="#ffffff"> <body text="#000000" bgColor="#ffffff">
<h1><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle">weak_ptr <h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
class template</h1> border="0"></A>weak_ptr class template</h1>
<p><A href="#Introduction">Introduction</A><br> <p><A href="#Introduction">Introduction</A><br>
<A href="#Synopsis">Synopsis</A><br> <A href="#Synopsis">Synopsis</A><br>
<A href="#Members">Members</A><br> <A href="#Members">Members</A><br>