mirror of
https://github.com/boostorg/utility.git
synced 2025-10-06 14:00:55 +02:00
Compare commits
1 Commits
boost-1.18
...
svn-branch
Author | SHA1 | Date | |
---|---|---|---|
|
11fa077264 |
@@ -16,7 +16,7 @@
|
|||||||
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
|
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
|
||||||
ALINK="#ff0000">
|
ALINK="#ff0000">
|
||||||
<IMG SRC="../../c++boost.gif"
|
<IMG SRC="../../c++boost.gif"
|
||||||
ALT="C++ Boost" width="277" height="86">
|
ALT="C++ Boost">
|
||||||
<!--end header-->
|
<!--end header-->
|
||||||
<BR Clear>
|
<BR Clear>
|
||||||
<H1>CopyConstructible</H1>
|
<H1>CopyConstructible</H1>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
|
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
|
||||||
ALINK="#ff0000">
|
ALINK="#ff0000">
|
||||||
<IMG SRC="../../c++boost.gif"
|
<IMG SRC="../../c++boost.gif"
|
||||||
ALT="C++ Boost" width="277" height="86">
|
ALT="C++ Boost">
|
||||||
|
|
||||||
<BR Clear>
|
<BR Clear>
|
||||||
|
|
||||||
|
@@ -69,10 +69,6 @@
|
|||||||
#pragma set woff 1234
|
#pragma set woff 1234
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(BOOST_MSVC)
|
|
||||||
# pragma warning( disable : 4284 ) // complaint about return type of
|
|
||||||
#endif // operator-> not begin a UDT
|
|
||||||
|
|
||||||
namespace boost {
|
namespace boost {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
|
@@ -78,9 +78,9 @@ namespace boost
|
|||||||
inline tied(A& a, B& b) : _a(a), _b(b) { }
|
inline tied(A& a, B& b) : _a(a), _b(b) { }
|
||||||
template <class U, class V>
|
template <class U, class V>
|
||||||
inline tied& operator=(const std::pair<U,V>& p) {
|
inline tied& operator=(const std::pair<U,V>& p) {
|
||||||
_a = p.first;
|
_a = p.first;
|
||||||
_b = p.second;
|
_b = p.second;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
A& _a;
|
A& _a;
|
||||||
|
@@ -617,7 +617,7 @@ uses the three adaptors.
|
|||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->27 Sep 2000<!--webbot bot="Timestamp" endspan i-checksum="14936" --></p>
|
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->17 Jun 2000<!--webbot bot="Timestamp" endspan i-checksum="15055" --></p>
|
||||||
<p><EFBFBD> Copyright Jeremy Siek 2000. Permission to copy, use,
|
<p><EFBFBD> Copyright Jeremy Siek 2000. Permission to copy, use,
|
||||||
modify, sell and distribute this document is granted provided this copyright
|
modify, sell and distribute this document is granted provided this copyright
|
||||||
notice appears in all copies. This document is provided "as is"
|
notice appears in all copies. This document is provided "as is"
|
||||||
|
@@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
<h1><img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" align="center" width="277" height="86">Header
|
<h1><img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" align="center" width="277" height="86">Header
|
||||||
<a href="../../boost/operators.hpp">boost/operators.hpp</a></h1>
|
<a href="../../boost/operators.hpp">boost/operators.hpp</a></h1>
|
||||||
<p>Header <a href="../../boost/operators.hpp">boost/operators.hpp</a> supplies
|
<p>Header <a href="file:///c:/boost/site/boost/operators.hpp">boost/operators.hpp</a>
|
||||||
(in namespace boost) several sets of templates:</p>
|
supplies (in namespace boost) several sets of templates:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#Arithmetic">Arithmetic operators</a>.
|
<li><a href="#Arithmetic">Arithmetic operators</a>.
|
||||||
<li><a href="#deref and helpers">Dereference operators and iterator helpers.</a></li>
|
<li><a href="#deref and helpers">Dereference operators and iterator helpers.</a></li>
|
||||||
@@ -43,10 +43,10 @@ additional operators, such as operator>, <=, >=, and +. <a href="
|
|||||||
forms</a> of the templates are also provided to allow interaction with other
|
forms</a> of the templates are also provided to allow interaction with other
|
||||||
types.</p>
|
types.</p>
|
||||||
<p><a href="http://www.boost.org/people/dave_abrahams.htm">Dave Abrahams</a>
|
<p><a href="http://www.boost.org/people/dave_abrahams.htm">Dave Abrahams</a>
|
||||||
started the library and contributed the arithmetic operators in <a href="../../boost/operators.hpp">boost/operators.hpp</a>.<br>
|
started the library and contributed the arithmetic operators in <a href="file:///c:/boost/site/boost/operators.hpp">boost/operators.hpp</a>.<br>
|
||||||
<a href="http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek</a>
|
<a href="http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek</a>
|
||||||
contributed the <a href="#deref and helpers">dereference operators and iterator
|
contributed the <a href="#deref and helpers">dereference operators and iterator
|
||||||
helpers</a> in <a href="../../boost/operators.hpp">boost/operators.hpp</a>.<br>
|
helpers</a> in <a href="file:///c:/boost/site/boost/operators.hpp">boost/operators.hpp</a>.<br>
|
||||||
<a href="http://www.boost.org/people/aleksey_gurtovoy.htm">Aleksey Gurtovoy</a>
|
<a href="http://www.boost.org/people/aleksey_gurtovoy.htm">Aleksey Gurtovoy</a>
|
||||||
contributed the code to support <a href="#chaining">base class chaining</a>
|
contributed the code to support <a href="#chaining">base class chaining</a>
|
||||||
while remaining backward-compatible with old versions of the library.<br>
|
while remaining backward-compatible with old versions of the library.<br>
|
||||||
@@ -60,7 +60,7 @@ x >= y,</code> and <code>x <= y</code>. Moreover, unless your class has
|
|||||||
really surprising behavior, some of these related operators can be defined in
|
really surprising behavior, some of these related operators can be defined in
|
||||||
terms of others (e.g. <code>x >= y <b><=></b> !(x < y)</code>).
|
terms of others (e.g. <code>x >= y <b><=></b> !(x < y)</code>).
|
||||||
Replicating this boilerplate for multiple classes is both tedious and
|
Replicating this boilerplate for multiple classes is both tedious and
|
||||||
error-prone. The <a href="../../boost/operators.hpp">boost/operators.hpp</a>
|
error-prone. The <a href="file:///c:/boost/site/boost/operators.hpp">boost/operators.hpp</a>
|
||||||
templates help by generating operators for you at namespace scope based on other
|
templates help by generating operators for you at namespace scope based on other
|
||||||
operators you've defined in your class.</p>
|
operators you've defined in your class.</p>
|
||||||
<a name="two_arg">
|
<a name="two_arg">
|
||||||
@@ -585,7 +585,8 @@ complicated than the old one, we think it's worth it to make the library more
|
|||||||
useful in real world. Alexy Gurtovoy contributed the code which supports the new
|
useful in real world. Alexy Gurtovoy contributed the code which supports the new
|
||||||
usage idiom while allowing the library remain backward-compatible.</p>
|
usage idiom while allowing the library remain backward-compatible.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->27 Sep 2000<!--webbot bot="Timestamp" endspan i-checksum="14936" --></p>
|
<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->03 Aug 2000<!--webbot bot="Timestamp" endspan i-checksum="14750" -->
|
||||||
|
</p>
|
||||||
<p><EFBFBD> Copyright David Abrahams and Beman Dawes 1999-2000. Permission to copy,
|
<p><EFBFBD> Copyright David Abrahams and Beman Dawes 1999-2000. Permission to copy,
|
||||||
use, modify, sell and distribute this document is granted provided this
|
use, modify, sell and distribute this document is granted provided this
|
||||||
copyright notice appears in all copies. This document is provided "as
|
copyright notice appears in all copies. This document is provided "as
|
||||||
|
19
tie.html
19
tie.html
@@ -15,7 +15,7 @@
|
|||||||
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
|
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
|
||||||
ALINK="#ff0000">
|
ALINK="#ff0000">
|
||||||
<IMG SRC="../../c++boost.gif"
|
<IMG SRC="../../c++boost.gif"
|
||||||
ALT="C++ Boost" width="277" height="86">
|
ALT="C++ Boost">
|
||||||
|
|
||||||
<BR Clear>
|
<BR Clear>
|
||||||
|
|
||||||
@@ -31,11 +31,11 @@ tied<A,B> tie(A& a, B& b);
|
|||||||
|
|
||||||
<P>
|
<P>
|
||||||
This is a utility function that makes it more convenient to work with
|
This is a utility function that makes it more convenient to work with
|
||||||
a function which returns a std::pair<>. The effect of the <TT>tie()</TT>
|
a function which returns a pair. The effect of the <TT>tie()</TT>
|
||||||
function is to allow the assignment of the two values of the pair to
|
function is to allow the assignment of the two values of the pair to
|
||||||
two separate variables. The idea for this comes from Jaakko
|
two separate variables. The idea for this comes from Jaakko
|
||||||
Järvi's Binders [<A
|
Järvi's Binders [<A
|
||||||
HREF="../graph/docs/bibliography.html#jaakko_tuple_assign">1</A>].
|
HREF="bibliography.html#jaakko_tuple_assign">1</A>].
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
|
|
||||||
@@ -63,7 +63,8 @@ pair of iterators is assigned to the iterator variables <TT>i</TT> and
|
|||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
Here is another example that uses <TT>tie()</TT> for handling operations with <a
|
Here is another example that uses <TT>tie()</TT> for handling
|
||||||
|
operaitons with <a
|
||||||
href="http://www.sgi.com/Technology/STL/set.html"><TT>std::set</TT></a>.
|
href="http://www.sgi.com/Technology/STL/set.html"><TT>std::set</TT></a>.
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
@@ -91,9 +92,9 @@ main(int, char*[])
|
|||||||
for (int k = 0; k < 2; ++k) {
|
for (int k = 0; k < 2; ++k) {
|
||||||
boost::tie(i,inserted) = s.insert(new_vals[k]);
|
boost::tie(i,inserted) = s.insert(new_vals[k]);
|
||||||
if (!inserted)
|
if (!inserted)
|
||||||
std::cout << *i << " was already in the set." << std::endl;
|
std::cout << *i << " was already in the set." << std::endl;
|
||||||
else
|
else
|
||||||
std::cout << *i << " successfully inserted." << std::endl;
|
std::cout << *i << " successfully inserted." << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -104,8 +105,8 @@ main(int, char*[])
|
|||||||
// Using tie() with a return value of pair<iterator,iterator>
|
// Using tie() with a return value of pair<iterator,iterator>
|
||||||
|
|
||||||
boost::tie(i,end) = std::equal_range(vals, vals + 6, 4);
|
boost::tie(i,end) = std::equal_range(vals, vals + 6, 4);
|
||||||
std::cout << "There were " << std::distance(i,end)
|
std::cout << "There were " << std::distance(i,end)
|
||||||
<< " occurrences of " << *i << "." << std::endl;
|
<< " occurances of " << *i << "." << std::endl;
|
||||||
// Footnote: of course one would normally just use std::count()
|
// Footnote: of course one would normally just use std::count()
|
||||||
// to get this information, but that would spoil the example :)
|
// to get this information, but that would spoil the example :)
|
||||||
}
|
}
|
||||||
@@ -116,7 +117,7 @@ The output is:
|
|||||||
<PRE>
|
<PRE>
|
||||||
3 successfully inserted.
|
3 successfully inserted.
|
||||||
9 was already in the set.
|
9 was already in the set.
|
||||||
There were 2 occurrences of 4.
|
There were 2 occurances of 4.
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
@@ -16,11 +16,10 @@
|
|||||||
<h2>Contents</h2>
|
<h2>Contents</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Function templates <a href="#functions next">next() and prior()</a></li>
|
<li>Template functions <a href="#functions next">next() and prior()</a></li>
|
||||||
<li>Class <a href="#Class noncopyable">noncopyable</a></li>
|
<li>Class <a href="#Class noncopyable">noncopyable</a></li>
|
||||||
<li>Function template <a href="tie.html">tie()</a> and supporting class tied.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h2> <a name="functions next">Function</a> templates next() and prior()</h2>
|
<h2>Template <a name="functions next">functions next</a>() and prior()</h2>
|
||||||
|
|
||||||
<p>Certain data types, such as the C++ Standard Library's forward and
|
<p>Certain data types, such as the C++ Standard Library's forward and
|
||||||
bidirectional iterators, do not provide addition and subtraction via operator+()
|
bidirectional iterators, do not provide addition and subtraction via operator+()
|
||||||
@@ -93,7 +92,7 @@ destructor declarations. He says "Probably this concern is misplaced, becau
|
|||||||
noncopyable will be used mostly for classes which own resources and thus have non-trivial destruction semantics."</p>
|
noncopyable will be used mostly for classes which own resources and thus have non-trivial destruction semantics."</p>
|
||||||
<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
|
||||||
-->28 September, 2000<!--webbot bot="Timestamp" endspan i-checksum="39343"
|
-->26 January, 2000<!--webbot bot="Timestamp" endspan i-checksum="38194"
|
||||||
-->
|
-->
|
||||||
</p>
|
</p>
|
||||||
<p><EFBFBD> Copyright boost.org 1999. Permission to copy, use, modify, sell and
|
<p><EFBFBD> Copyright boost.org 1999. Permission to copy, use, modify, sell and
|
||||||
|
Reference in New Issue
Block a user