forked from boostorg/smart_ptr
Tidy documentation in smart_ptr
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Smart Pointer Changes</title>
|
<title>Smart Pointer Changes</title>
|
||||||
<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 text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>Smart Pointer Changes</h1>
|
width="277" align="middle" border="0">Smart Pointer Changes</h1>
|
||||||
<p>The February 2002 change to the Boost smart pointers introduced a number of
|
<p>The February 2002 change to the Boost smart pointers introduced a number of
|
||||||
changes. Since the previous version of the smart pointers was in use for a long
|
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
|
time, it's useful to have a detailed list of what changed from a library user's
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
violate the C++ standard.</li>
|
violate the C++ standard.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised 1 February 2002</p>
|
<p>$Date$</p>
|
||||||
<p><small>Copyright 2002 Darin Adler. Distributed under the Boost Software License, Version
|
<p><small>Copyright 2002 Darin Adler. Distributed under the Boost Software License, Version
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
||||||
|
@@ -1,23 +1,13 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Boost: enable_shared_from_this.hpp documentation</title>
|
<title>enable_shared_from_this</title>
|
||||||
<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="white" style="MARGIN-LEFT: 5%; MARGIN-RIGHT: 5%">
|
<body text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<table border="0" width="100%">
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
<tr>
|
width="277" align="middle" border="0">enable_shared_from_this</h1>
|
||||||
<td width="277"><A href="../../index.htm"> <img src="../../boost.png" alt="boost.png (6897 bytes)" width="277" height="86" border="0"></A>
|
<h2><a name="Purpose">Purpose</a></h2>
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<h1>enable_shared_from_this.hpp</h1>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" height="64"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<h3><a name="Purpose">Purpose</a></h3>
|
|
||||||
<p>
|
<p>
|
||||||
The header <STRONG><boost/enable_shared_from_this.hpp></STRONG> defines
|
The header <STRONG><boost/enable_shared_from_this.hpp></STRONG> defines
|
||||||
the class template <STRONG>enable_shared_from_this</STRONG>. It is used as a
|
the class template <STRONG>enable_shared_from_this</STRONG>. It is used as a
|
||||||
@@ -27,7 +17,7 @@
|
|||||||
<P><STRONG>enable_shared_from_this<T></STRONG> defines two member functions
|
<P><STRONG>enable_shared_from_this<T></STRONG> defines two member functions
|
||||||
called <STRONG>shared_from_this</STRONG> that return a <STRONG>shared_ptr<T></STRONG>
|
called <STRONG>shared_from_this</STRONG> that return a <STRONG>shared_ptr<T></STRONG>
|
||||||
and <STRONG>shared_ptr<T const></STRONG>, depending on constness, to <STRONG>this</STRONG>.</P>
|
and <STRONG>shared_ptr<T const></STRONG>, depending on constness, to <STRONG>this</STRONG>.</P>
|
||||||
<h3><a name="Example">Example</a></h3>
|
<h2><a name="Example">Example</a></h2>
|
||||||
<pre>
|
<pre>
|
||||||
#include <boost/enable_shared_from_this.hpp>
|
#include <boost/enable_shared_from_this.hpp>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
@@ -86,9 +76,9 @@ public:
|
|||||||
<b>Postconditions:</b> <tt>r.get() == this</tt>.
|
<b>Postconditions:</b> <tt>r.get() == this</tt>.
|
||||||
</p>
|
</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
<p>$Date$</p>
|
||||||
<p>
|
<p>
|
||||||
<br>
|
<small>Copyright © 2002, 2003 by Peter Dimov. Distributed under the Boost Software License, Version
|
||||||
<small>Copyright <20> 2002, 2003 by Peter Dimov. Distributed under the Boost Software License, Version
|
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
||||||
</body>
|
</body>
|
||||||
|
@@ -1,14 +1,17 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<title>Smart Pointers</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
<meta http-equiv="refresh" content="0; URL=smart_ptr.htm">
|
<meta http-equiv="refresh" content="0; URL=smart_ptr.htm">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
Automatic redirection failed, please go to
|
Automatic redirection failed, please go to
|
||||||
<a href="smart_ptr.htm">smart_ptr.htm</a>.
|
<a href="smart_ptr.htm">smart_ptr.htm</a>.
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!--
|
<!--
|
||||||
<09> Copyright Beman Dawes, 2001
|
(C) Copyright Beman Dawes, 2001
|
||||||
Distributed under the Boost Software License, Version 1.0.
|
Distributed under the Boost Software License, Version 1.0.
|
||||||
See accompanying file LICENSE_1_0.txt or copy at
|
See accompanying file LICENSE_1_0.txt or copy at
|
||||||
http://www.boost.org/LICENSE_1_0.txt
|
http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
@@ -1,17 +1,17 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>intrusive_ptr</title>
|
<title>intrusive_ptr</title>
|
||||||
<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" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><a href="../../index.htm"><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0" /></a>intrusive_ptr class template</h1>
|
width="277" align="middle" border="0">intrusive_ptr class template</h1>
|
||||||
<p>
|
<p>
|
||||||
<a href="#Introduction">Introduction</a><br />
|
<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>
|
||||||
<a href="#functions">Free Functions</a><br />
|
<a href="#functions">Free Functions</a><br>
|
||||||
</p>
|
</p>
|
||||||
<h2><a name="Introduction">Introduction</a></h2>
|
<h2><a name="Introduction">Introduction</a></h2>
|
||||||
<p>The <code>intrusive_ptr</code> class template stores a pointer to an object with an
|
<p>The <code>intrusive_ptr</code> class template stores a pointer to an object with an
|
||||||
@@ -310,9 +310,10 @@ intrusive_ptr & operator=(T * r);</pre>
|
|||||||
<p><b>Effects:</b> <code>os << p.get();</code>.</p>
|
<p><b>Effects:</b> <code>os << p.get();</code>.</p>
|
||||||
<p><b>Returns:</b> <code>os</code>.</p>
|
<p><b>Returns:</b> <code>os</code>.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<hr />
|
<hr>
|
||||||
|
<p>$Date$</p>
|
||||||
<p>
|
<p>
|
||||||
<small>Copyright <EFBFBD> 2003-2005, 2013 Peter Dimov. Distributed under the Boost Software License, Version
|
<small>Copyright © 2003-2005, 2013 Peter Dimov. Distributed under the Boost Software License, Version
|
||||||
1.0. See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
|
1.0. See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
|
||||||
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>.</small></p>
|
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>.</small></p>
|
||||||
</body>
|
</body>
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>intrusive_ref_counter</title>
|
<title>intrusive_ref_counter</title>
|
||||||
<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" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>basic_intrusive_ref_counter class template</h1>
|
width="277" align="middle" border="0">basic_intrusive_ref_counter class template</h1>
|
||||||
<p>
|
<p>
|
||||||
<A href="#Introduction">Introduction</A><br>
|
<A href="#Introduction">Introduction</A><br>
|
||||||
<A href="#Synopsis">Synopsis</A><br>
|
<A href="#Synopsis">Synopsis</A><br>
|
||||||
@@ -14,11 +14,11 @@
|
|||||||
</p>
|
</p>
|
||||||
<h2><a name="Introduction">Introduction</a></h2>
|
<h2><a name="Introduction">Introduction</a></h2>
|
||||||
<p>The <STRONG>intrusive_ref_counter</STRONG> class template implements a reference counter for a derived
|
<p>The <STRONG>intrusive_ref_counter</STRONG> class template implements a reference counter for a derived
|
||||||
user's class that is intended to be used with <STRONG><a href="intrusive_ptr.html">intrusive_ptr</a></STRONG>.
|
user's class that is intended to be used with <STRONG><a href="intrusive_ptr.html">intrusive_ptr</a></STRONG>.
|
||||||
The base class has associated <STRONG>intrusive_ptr_add_ref</STRONG> and <STRONG>intrusive_ptr_release</STRONG> functions
|
The base class has associated <STRONG>intrusive_ptr_add_ref</STRONG> and <STRONG>intrusive_ptr_release</STRONG> functions
|
||||||
which modify the reference counter as needed and destroy the user's object when the counter drops to zero.</p>
|
which modify the reference counter as needed and destroy the user's object when the counter drops to zero.</p>
|
||||||
<p>The class template is parameterized on <STRONG>DerivedT</STRONG> and <STRONG>CounterPolicyT</STRONG> parameters.
|
<p>The class template is parameterized on <STRONG>DerivedT</STRONG> and <STRONG>CounterPolicyT</STRONG> parameters.
|
||||||
The first parameter is the user's class that derives from <STRONG>intrusive_ref_counter</STRONG>. This type
|
The first parameter is the user's class that derives from <STRONG>intrusive_ref_counter</STRONG>. This type
|
||||||
is needed in order to destroy the object correctly when there are no references to it left.</p>
|
is needed in order to destroy the object correctly when there are no references to it left.</p>
|
||||||
<p>The second parameter is a policy that defines the nature of the reference counter.
|
<p>The second parameter is a policy that defines the nature of the reference counter.
|
||||||
Boost.SmartPtr provides two such policies: <STRONG>thread_unsafe_counter</STRONG> and <STRONG>thread_safe_counter</STRONG>. The former
|
Boost.SmartPtr provides two such policies: <STRONG>thread_unsafe_counter</STRONG> and <STRONG>thread_safe_counter</STRONG>. The former
|
||||||
@@ -85,10 +85,9 @@
|
|||||||
<P><B>Notes:</B> The returned value may not be actual in multi-threaded applications.</P>
|
<P><B>Notes:</B> The returned value may not be actual in multi-threaded applications.</P>
|
||||||
</BLOCKQUOTE>
|
</BLOCKQUOTE>
|
||||||
<hr>
|
<hr>
|
||||||
|
<p>$Date$</p>
|
||||||
<p>
|
<p>
|
||||||
$Date$</p>
|
<small>Copyright © 2013 Andrey Semashev. Distributed under the Boost Software License, Version
|
||||||
<p>
|
|
||||||
<small>Copyright <20> 2013 Andrey Semashev. Distributed under the Boost Software License, Version
|
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
||||||
</body>
|
</body>
|
||||||
|
@@ -1,12 +1,13 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>make_shared and allocate_shared</title>
|
<title>make_shared and allocate_shared</title>
|
||||||
<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" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>make_shared and allocate_shared function templates</h1>
|
width="277" align="middle" border="0">make_shared and allocate_shared
|
||||||
|
function templates</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="#functions">Free Functions</A><br>
|
<A href="#functions">Free Functions</A><br>
|
||||||
@@ -79,7 +80,7 @@ template<class T, class A, class... Args>
|
|||||||
where <code>pv</code> is a <code>void*</code> pointing to storage suitable
|
where <code>pv</code> is a <code>void*</code> pointing to storage suitable
|
||||||
to hold an object of type <code>T</code>,
|
to hold an object of type <code>T</code>,
|
||||||
shall be well-formed. <code>A</code> shall be an <em>Allocator</em>,
|
shall be well-formed. <code>A</code> shall be an <em>Allocator</em>,
|
||||||
as described in section 20.1.5 (<stong>Allocator requirements</strong>) of the C++ Standard.
|
as described in section 20.1.5 (<strong>Allocator requirements</strong>) of the C++ Standard.
|
||||||
The copy constructor and destructor of <code>A</code> shall not throw.</p>
|
The copy constructor and destructor of <code>A</code> shall not throw.</p>
|
||||||
<p><b>Effects:</b> Allocates memory suitable for an object of type <code>T</code>
|
<p><b>Effects:</b> Allocates memory suitable for an object of type <code>T</code>
|
||||||
and constructs an object in it via the placement new expression <code>new( pv ) T()</code>
|
and constructs an object in it via the placement new expression <code>new( pv ) T()</code>
|
||||||
@@ -109,8 +110,7 @@ template<class T, class A, class... Args>
|
|||||||
<pre>boost::shared_ptr<std::string> x = boost::make_shared<std::string>("hello, world!");
|
<pre>boost::shared_ptr<std::string> x = boost::make_shared<std::string>("hello, world!");
|
||||||
std::cout << *x;</pre>
|
std::cout << *x;</pre>
|
||||||
<hr>
|
<hr>
|
||||||
<p>
|
<p>$Date$</p>
|
||||||
$Date: 2008-05-19 15:42:39 -0400 (Mon, 19 May 2008) $</p>
|
|
||||||
<p><small>Copyright 2008 Peter Dimov. Copyright 2008 Frank Mori Hess.
|
<p><small>Copyright 2008 Peter Dimov. Copyright 2008 Frank Mori Hess.
|
||||||
Distributed under the Boost Software License,
|
Distributed under the Boost Software License,
|
||||||
Version 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A>
|
Version 1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A>
|
||||||
|
@@ -250,8 +250,10 @@ boost::shared_ptr<int[4][2]> a2 = boost::make_shared_noinit<int[4][2]&g
|
|||||||
</blockquote>
|
</blockquote>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<h2><a name="history">History</a></h2>
|
<h2><a name="history">History</a></h2>
|
||||||
<p>January 2014. Glen Fernandes reduced the overloads of make_shared and
|
<p>February 2014. Glen Fernandes updated overloads of make_shared and
|
||||||
allocate_shared according to <a href="#N3870">N3870</a>.</p>
|
allocate_shared to conform to the specification in C++ standard paper
|
||||||
|
<a href="#N3870">N3870</a> including resolving C++ standard library
|
||||||
|
defect report 2070.</p>
|
||||||
<p>November 2012. Glen Fernandes contributed implementations of
|
<p>November 2012. Glen Fernandes contributed implementations of
|
||||||
make_shared and allocate_shared for arrays.</p>
|
make_shared and allocate_shared for arrays.</p>
|
||||||
<h2><a name="references">References</a></h2>
|
<h2><a name="references">References</a></h2>
|
||||||
@@ -260,7 +262,7 @@ boost::shared_ptr<int[4][2]> a2 = boost::make_shared_noinit<int[4][2]&g
|
|||||||
Extending make_shared to Support Arrays, Revision 1</a>, Peter Dimov
|
Extending make_shared to Support Arrays, Revision 1</a>, Peter Dimov
|
||||||
& Glen Fernandes, January, 2014.</p>
|
& Glen Fernandes, January, 2014.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>$Date: 2014-01-20 11:10:00 -0800 (Mon, 20 Jan 2014) $</p>
|
<p>$Date$</p>
|
||||||
<p><small>Copyright 2012-2014 Glen Fernandes. Distributed under the
|
<p><small>Copyright 2012-2014 Glen Fernandes. Distributed under the
|
||||||
Boost Software License, Version 1.0. See accompanying file
|
Boost Software License, Version 1.0. See accompanying file
|
||||||
<a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy at
|
<a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy at
|
||||||
|
@@ -142,7 +142,7 @@ unique_ptr<int[][2]> p2 = boost::make_unique_noinit<int[][2]>(2);</p
|
|||||||
<p>January 2014. Glen Fernandes contributed implementations of
|
<p>January 2014. Glen Fernandes contributed implementations of
|
||||||
make_unique for objects and arrays.</p>
|
make_unique for objects and arrays.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>$Date: 2014-01-20 11:10:00 -0800 (Mon, 20 Jan 2014) $</p>
|
<p>$Date$</p>
|
||||||
<p><small>Copyright 2012-2014 Glen Fernandes. Distributed under the
|
<p><small>Copyright 2012-2014 Glen Fernandes. Distributed under the
|
||||||
Boost Software License, Version 1.0. See accompanying file
|
Boost Software License, Version 1.0. See accompanying file
|
||||||
<a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy at
|
<a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy at
|
||||||
|
@@ -1,11 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>pointer_cast.hpp</title>
|
<title>pointer_cast</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><IMG height="86" alt="C++ Boost" src="../../boost.png" width="277" align="middle" border="0">Pointer
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
cast functions</h1>
|
width="277" align="middle" border="0">pointer_cast</h1>
|
||||||
<p>The pointer cast functions (<code>boost::static_pointer_cast</code> <code>boost::dynamic_pointer_cast</code>
|
<p>The pointer cast functions (<code>boost::static_pointer_cast</code> <code>boost::dynamic_pointer_cast</code>
|
||||||
<code>boost::reinterpret_pointer_cast</code> <code>boost::const_pointer_cast</code>)
|
<code>boost::reinterpret_pointer_cast</code> <code>boost::const_pointer_cast</code>)
|
||||||
provide a way to write generic pointer castings for raw pointers. The functions
|
provide a way to write generic pointer castings for raw pointers. The functions
|
||||||
@@ -97,7 +98,7 @@ int main()
|
|||||||
<P>The example demonstrates how the generic pointer casts help us create pointer
|
<P>The example demonstrates how the generic pointer casts help us create pointer
|
||||||
independent code.</P>
|
independent code.</P>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised: $Date$</p>
|
<p>$Date$</p>
|
||||||
<p>Copyright 2005 Ion Gazta<74>aga. Use, modification, and distribution are subject to
|
<p>Copyright 2005 Ion Gazta<74>aga. Use, modification, and distribution are subject to
|
||||||
the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
|
the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
|
||||||
LICENSE_1_0.txt</A> or a copy at <<A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>>.)</p>
|
LICENSE_1_0.txt</A> or a copy at <<A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>>.)</p>
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>pointer_to_other.hpp</title>
|
<title>pointer_to_other</title>
|
||||||
<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 text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" WIDTH="277" HEIGHT="86">Header
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
<a href="../../boost/pointer_to_other.hpp">boost/pointer_to_other.hpp</a></h1>
|
width="277" align="middle" border="0">pointer_to_other</h1>
|
||||||
<p>
|
<p>
|
||||||
The pointer to other utility provides a way, given a source pointer type,
|
The pointer to other utility provides a way, given a source pointer type,
|
||||||
to obtain a pointer of the same type to another pointee type. The utility is
|
to obtain a pointer of the same type to another pointee type. The utility is
|
||||||
@@ -99,7 +99,7 @@ class memory_allocator
|
|||||||
};</pre>
|
};</pre>
|
||||||
<p>As we can see, using pointer_to_other we can create pointer independent code.</p>
|
<p>As we can see, using pointer_to_other we can create pointer independent code.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Last revised: $Date$</p>
|
<p>$Date$</p>
|
||||||
<p><small>Copyright 2005, 2006 Ion Gazta<74>aga and Peter Dimov. Use, modification,
|
<p><small>Copyright 2005, 2006 Ion Gazta<74>aga and Peter Dimov. Use, modification,
|
||||||
and distribution are subject to the Boost Software License, Version 1.0.<br>
|
and distribution are subject to the Boost Software License, Version 1.0.<br>
|
||||||
(See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or a
|
(See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or a
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>scoped_array</title>
|
<title>scoped_array</title>
|
||||||
<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 text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>scoped_array class template</h1>
|
width="277" align="middle" border="0">scoped_array class template</h1>
|
||||||
<p>The <b>scoped_array</b> class template stores a pointer to a dynamically
|
<p>The <b>scoped_array</b> class template stores a pointer to a dynamically
|
||||||
allocated array. (Dynamically allocated arrays are allocated with the C++ <b>new[]</b>
|
allocated array. (Dynamically allocated arrays are allocated with the C++ <b>new[]</b>
|
||||||
expression.) The array pointed to is guaranteed to be deleted, either on
|
expression.) The array pointed to is guaranteed to be deleted, either on
|
||||||
@@ -106,8 +106,7 @@
|
|||||||
<p>Equivalent to <b>a.swap(b)</b>. Matches the interface of <b>std::swap</b>.
|
<p>Equivalent to <b>a.swap(b)</b>. Matches the interface of <b>std::swap</b>.
|
||||||
Provided as an aid to generic programming.</p>
|
Provided as an aid to generic programming.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan-->
|
<p>$Date$</p>
|
||||||
09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310"--></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. Distributed under the Boost Software License, Version
|
Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>scoped_ptr</title>
|
<title>scoped_ptr</title>
|
||||||
<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 text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>scoped_ptr class template</h1>
|
width="277" align="middle" border="0">scoped_ptr class template</h1>
|
||||||
<p>The <b>scoped_ptr</b> class template stores a pointer to a dynamically allocated
|
<p>The <b>scoped_ptr</b> class template stores a pointer to a dynamically allocated
|
||||||
object. (Dynamically allocated objects are allocated with the C++ <b>new</b> expression.)
|
object. (Dynamically allocated objects are allocated with the C++ <b>new</b> expression.)
|
||||||
The object pointed to is guaranteed to be deleted, either on destruction of the <b>scoped_ptr</b>,
|
The object pointed to is guaranteed to be deleted, either on destruction of the <b>scoped_ptr</b>,
|
||||||
@@ -171,8 +171,7 @@ Buckle my shoe</pre>
|
|||||||
given context. Use <STRONG>std::auto_ptr</STRONG> where transfer of ownership
|
given context. Use <STRONG>std::auto_ptr</STRONG> where transfer of ownership
|
||||||
is required. (supplied by Dave Abrahams)</p>
|
is required. (supplied by Dave Abrahams)</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan -->
|
<p>$Date</p>
|
||||||
09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310" --></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. Distributed under the Boost Software License, Version
|
Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>shared_array</title>
|
<title>shared_array</title>
|
||||||
<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 text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>shared_array class template</h1>
|
width="277" align="middle" border="0">shared_array class template</h1>
|
||||||
<p>The <b>shared_array</b> class template stores a pointer to a dynamically
|
<p>The <b>shared_array</b> class template stores a pointer to a dynamically
|
||||||
allocated array. (Dynamically allocated array are allocated with the C++ <b>new[]</b>
|
allocated array. (Dynamically allocated array are allocated with the C++ <b>new[]</b>
|
||||||
expression.) The object pointed to is guaranteed to be deleted when the last <b>shared_array</b>
|
expression.) The object pointed to is guaranteed to be deleted when the last <b>shared_array</b>
|
||||||
@@ -174,9 +174,7 @@ template<class T>
|
|||||||
<p>Equivalent to <b>a.swap(b)</b>. Matches the interface of <b>std::swap</b>.
|
<p>Equivalent to <b>a.swap(b)</b>. Matches the interface of <b>std::swap</b>.
|
||||||
Provided as an aid to generic programming.</p>
|
Provided as an aid to generic programming.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised
|
<p>$Date</p>
|
||||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->
|
|
||||||
09 January 2003<!--webbot bot="Timestamp" endspan i-checksum="32310" --></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. Distributed under the Boost Software License, Version
|
Copyright 2002-2005 Peter Dimov. Distributed under the Boost Software License, Version
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
|
@@ -1,28 +1,29 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>shared_ptr</title>
|
<title>shared_ptr</title>
|
||||||
<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>
|
<body text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1>boost::shared_ptr class template</h1>
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
<p><a href="#Introduction">Introduction</a><br />
|
width="277" align="middle" border="0">shared_ptr class template</h1>
|
||||||
<a href="#BestPractices">Best Practices</a><br />
|
<p><a href="#Introduction">Introduction</a><br>
|
||||||
<a href="#Synopsis">Synopsis</a><br />
|
<a href="#BestPractices">Best Practices</a><br>
|
||||||
<a href="#Members">Members</a><br />
|
<a href="#Synopsis">Synopsis</a><br>
|
||||||
<a href="#functions">Free Functions</a><br />
|
<a href="#Members">Members</a><br>
|
||||||
<a href="#example">Example</a><br />
|
<a href="#functions">Free Functions</a><br>
|
||||||
<a href="#HandleBody">Handle/Body Idiom</a><br />
|
<a href="#example">Example</a><br>
|
||||||
<a href="#ThreadSafety">Thread Safety</a><br />
|
<a href="#HandleBody">Handle/Body Idiom</a><br>
|
||||||
<a href="#FAQ">Frequently Asked Questions</a><br />
|
<a href="#ThreadSafety">Thread Safety</a><br>
|
||||||
<a href="smarttests.htm">Smart Pointer Timings</a><br />
|
<a href="#FAQ">Frequently Asked Questions</a><br>
|
||||||
|
<a href="smarttests.htm">Smart Pointer Timings</a><br>
|
||||||
<a href="sp_techniques.html">Programming Techniques</a></p>
|
<a href="sp_techniques.html">Programming Techniques</a></p>
|
||||||
<h2 id="Introduction">Introduction</h2>
|
<h2 id="Introduction">Introduction</h2>
|
||||||
<p>The <code>shared_ptr</code> class template stores a pointer to a dynamically allocated
|
<p>The <code>shared_ptr</code> class template stores a pointer to a dynamically allocated
|
||||||
object, typically with a C++ <em>new-expression</em>. The object pointed to is
|
object, typically with a C++ <em>new-expression</em>. The object pointed to is
|
||||||
guaranteed to be deleted when the last <code>shared_ptr</code> pointing to it is
|
guaranteed to be deleted when the last <code>shared_ptr</code> pointing to it is
|
||||||
destroyed or reset.</p>
|
destroyed or reset.</p>
|
||||||
<blockquote><em>Example:</em><br /><pre>shared_ptr<X> p1( new X );
|
<blockquote><em>Example:</em><br><pre>shared_ptr<X> p1( new X );
|
||||||
shared_ptr<void> p2( new int(5) );
|
shared_ptr<void> p2( new int(5) );
|
||||||
</pre></blockquote>
|
</pre></blockquote>
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ shared_ptr<void> p2( new int(5) );
|
|||||||
the template parameter. There is almost no difference between using an unsized array, <code>T[]</code>,
|
the template parameter. There is almost no difference between using an unsized array, <code>T[]</code>,
|
||||||
and a sized array, <code>T[N]</code>; the latter just enables <code>operator[]</code> to perform a range check
|
and a sized array, <code>T[N]</code>; the latter just enables <code>operator[]</code> to perform a range check
|
||||||
on the index.</p>
|
on the index.</p>
|
||||||
<blockquote><em>Example:</em><br /><pre>shared_ptr<double[1024]> p1( new double[1024] );
|
<blockquote><em>Example:</em><br><pre>shared_ptr<double[1024]> p1( new double[1024] );
|
||||||
shared_ptr<double[]> p2( new double[n] );
|
shared_ptr<double[]> p2( new double[n] );
|
||||||
</pre></blockquote>
|
</pre></blockquote>
|
||||||
|
|
||||||
@@ -835,7 +836,8 @@ int * p = a.release();
|
|||||||
object through it. <code>shared_ptr</code> is "as close to raw pointers as possible
|
object through it. <code>shared_ptr</code> is "as close to raw pointers as possible
|
||||||
but no closer".
|
but no closer".
|
||||||
</p>
|
</p>
|
||||||
<hr />
|
<hr>
|
||||||
|
<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, 2012, 2013 Peter Dimov. Distributed under the Boost Software License,
|
Copyright 2002-2005, 2012, 2013 Peter Dimov. Distributed under the Boost Software License,
|
||||||
Version 1.0. See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
|
Version 1.0. See accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
|
||||||
|
@@ -4,9 +4,9 @@
|
|||||||
<title>Smart Pointers</title>
|
<title>Smart Pointers</title>
|
||||||
<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 text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>Smart Pointers</h1>
|
width="277" align="middle" border="0">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>
|
||||||
@@ -66,12 +66,12 @@
|
|||||||
<div align="left">
|
<div align="left">
|
||||||
<table border="1" cellpadding="4" cellspacing="0">
|
<table border="1" cellpadding="4" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="make_shared.html"><b>make_shared and allocate_shared for objects</b></a></td>
|
<td><a href="make_shared.html"><b>make_shared, allocate_shared</b></a> for objects</td>
|
||||||
<td><a href="../../boost/make_shared.hpp"><boost/make_shared.hpp></a></td>
|
<td><a href="../../boost/make_shared.hpp"><boost/make_shared.hpp></a></td>
|
||||||
<td>Efficient creation of <code>shared_ptr</code> objects.</td>
|
<td>Efficient creation of <code>shared_ptr</code> objects.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="make_shared_array.html"><b>make_shared and allocate_shared for arrays</b></a></td>
|
<td><a href="make_shared_array.html"><b>make_shared, allocate_shared</b></a> for arrays</td>
|
||||||
<td><a href="../../boost/make_shared.hpp"><boost/make_shared.hpp></a></td>
|
<td><a href="../../boost/make_shared.hpp"><boost/make_shared.hpp></a></td>
|
||||||
<td>Efficient creation of <code>shared_ptr</code> arrays.</td>
|
<td>Efficient creation of <code>shared_ptr</code> arrays.</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -136,10 +136,12 @@
|
|||||||
<p>Functions which destroy objects of the pointed to type are prohibited from
|
<p>Functions which destroy objects of the pointed to type are prohibited from
|
||||||
throwing exceptions by the <a href="#common_requirements">common requirements</a>.</p>
|
throwing exceptions by the <a href="#common_requirements">common requirements</a>.</p>
|
||||||
<h2><a name="History">History</a> and Acknowledgements</h2>
|
<h2><a name="History">History</a> and Acknowledgements</h2>
|
||||||
<p>January 2014. Glen Fernandes confined the overloads of <b>make_shared</b>
|
<p>February 2014. Glen Fernandes updated overloads of <b>make_shared</b> and
|
||||||
and <b>allocate_shared</b> for arrays to the specification in
|
<b>allocate_shared</b> to conform to the specification in C++ standard paper
|
||||||
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3870.html">N3870</a>
|
<a href="#D&F-14">[D&F-14]</a>, and implemented <b>make_unique</b> for
|
||||||
and implemented <b>make_unique</b> for arrays and objects.</p>
|
arrays and objects. Peter Dimov and Glen Fernandes updated the scalar and
|
||||||
|
array implementations, respectively, to resolve C++ standard library defect
|
||||||
|
2070.</p>
|
||||||
<p>November 2012. Glen Fernandes provided implementations of <b>make_shared</b>
|
<p>November 2012. Glen Fernandes provided implementations of <b>make_shared</b>
|
||||||
and <b>allocate_shared</b> for arrays. They achieve a single allocation for an
|
and <b>allocate_shared</b> for arrays. They achieve a single allocation for an
|
||||||
array that can be initialized with constructor arguments or initializer lists
|
array that can be initialized with constructor arguments or initializer lists
|
||||||
@@ -199,6 +201,9 @@
|
|||||||
the full committee, <b>counted_ptr</b> was rejected and surprising
|
the full committee, <b>counted_ptr</b> was rejected and surprising
|
||||||
transfer-of-ownership semantics were added to <b>auto_ptr</b>.</p>
|
transfer-of-ownership semantics were added to <b>auto_ptr</b>.</p>
|
||||||
<h2><a name="References">References</a></h2>
|
<h2><a name="References">References</a></h2>
|
||||||
|
<p>[<a name="D&F-14">D&F-14</a>] Peter Dimov & Glen Fernandes, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3870.html">
|
||||||
|
Extending make_shared to Support Arrays, Revision 1</a>, C++ committee document N3870,
|
||||||
|
January, 2014.</p>
|
||||||
<p>[<a name="Col-94">Col-94</a>] Gregory Colvin, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1994/N0555.pdf">
|
<p>[<a name="Col-94">Col-94</a>] Gregory Colvin, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1994/N0555.pdf">
|
||||||
Exception Safe Smart Pointers</a>, C++ committee document 94-168/N0555,
|
Exception Safe Smart Pointers</a>, C++ committee document 94-168/N0555,
|
||||||
July, 1994.</p>
|
July, 1994.</p>
|
||||||
|
@@ -7,9 +7,9 @@
|
|||||||
<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">
|
<body text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#0000ff">
|
||||||
|
|
||||||
<h1><img src="../../boost.png" alt="boost.png (6897 bytes)" align="middle" WIDTH="277" HEIGHT="86">Smart Pointer Timings</h1>
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle" border="0">Smart Pointer Timings</h1>
|
||||||
|
|
||||||
<p>In late January 2000, Mark Borgerding put forward a suggestion to boost for
|
<p>In late January 2000, Mark Borgerding put forward a suggestion to boost for
|
||||||
a new design of smart pointer whereby an intrusive doubly linked list is used
|
a new design of smart pointer whereby an intrusive doubly linked list is used
|
||||||
@@ -533,9 +533,8 @@ Gavin Collings,
|
|||||||
spreads its information as in the case of linked pointer.</li>
|
spreads its information as in the case of linked pointer.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->19 August 2001<!--webbot bot="Timestamp" endspan i-checksum="14767" -->
|
<p>$Date$</p>
|
||||||
</p>
|
<p>© Copyright Gavin Collings 2000. Permission to copy, use, modify, sell
|
||||||
<p><EFBFBD> Copyright Gavin Collings 2000. Permission to copy, use, modify, sell
|
|
||||||
and distribute this document is granted provided this copyright notice appears in all
|
and distribute this document is granted provided this copyright notice appears in all
|
||||||
copies. This document is provided "as is" without express or implied warranty,
|
copies. This document is provided "as is" without express or implied warranty,
|
||||||
and with no claim as to its suitability for any purpose.</p>
|
and with no claim as to its suitability for any purpose.</p>
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Smart Pointer Programming Techniques</title>
|
<title>Smart Pointer Programming Techniques</title>
|
||||||
<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" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>Smart Pointer Programming Techniques</h1>
|
width="277" align="middle" border="0">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>
|
||||||
@@ -758,7 +758,7 @@ public:
|
|||||||
all weak pointers will automatically expire.</p>
|
all weak pointers will automatically expire.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>$Date$</p>
|
<p>$Date$</p>
|
||||||
<p><small>Copyright <EFBFBD> 2003 Peter Dimov. Distributed under the Boost Software License, Version
|
<p><small>Copyright © 2003 Peter Dimov. Distributed under the Boost Software License, Version
|
||||||
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
1.0. See accompanying file <A href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
||||||
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>.</small></p>
|
||||||
</body>
|
</body>
|
||||||
|
18
weak_ptr.htm
18
weak_ptr.htm
@@ -1,12 +1,12 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>weak_ptr</title>
|
<title>weak_ptr</title>
|
||||||
<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" link="#0000ff" vlink="#0000ff">
|
||||||
<h1><A href="../../index.htm"><IMG height="86" alt="boost.png (6897 bytes)" src="../../boost.png" width="277" align="middle"
|
<h1><img height="86" alt="boost.png (6897 bytes)" src="../../boost.png"
|
||||||
border="0"></A>weak_ptr class template</h1>
|
width="277" align="middle" border="0">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>
|
||||||
@@ -107,14 +107,14 @@ if(shared_ptr<int> r = q.<A href="#lock" >lock</A>())
|
|||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Provides the type of the template parameter T.</p>
|
<p>Provides the type of the template parameter T.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<h3><a name="default-constructor">constructors</a></h3>
|
<h3><a name="constructors">constructors</a></h3>
|
||||||
<pre>weak_ptr();</pre>
|
<pre><a name="default-constructor">weak_ptr();</a></pre>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p><b>Effects:</b> Constructs an <EM>empty</EM> <b>weak_ptr</b>.</p>
|
<p><b>Effects:</b> Constructs an <EM>empty</EM> <b>weak_ptr</b>.</p>
|
||||||
<p><b>Postconditions:</b> <code>use_count() == 0</code>.</p>
|
<p><b>Postconditions:</b> <code>use_count() == 0</code>.</p>
|
||||||
<p><b>Throws:</b> nothing.</p>
|
<p><b>Throws:</b> nothing.</p>
|
||||||
</blockquote><a name="constructors"></a>
|
</blockquote>
|
||||||
<pre>template<class Y> weak_ptr</A>(shared_ptr<Y> const & r);
|
<pre>template<class Y> weak_ptr(shared_ptr<Y> const & r);
|
||||||
weak_ptr(weak_ptr const & r);
|
weak_ptr(weak_ptr const & r);
|
||||||
template<class Y> weak_ptr(weak_ptr<Y> const & r);</pre>
|
template<class Y> weak_ptr(weak_ptr<Y> const & r);</pre>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
@@ -230,8 +230,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
</pre>
|
</pre>
|
||||||
<p><br>
|
|
||||||
</p>
|
|
||||||
<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.
|
||||||
|
Reference in New Issue
Block a user