mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 15:04:00 +00:00
Ported compressed_pair documentation to Quickbook
This commit is contained in:
parent
61d07273fc
commit
4531b2a2a6
@ -1,76 +0,0 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Header </title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
||||||
<meta name="Template" content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
|
|
||||||
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
|
|
||||||
<boostcompressed_pair.hpp>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080">
|
|
||||||
<h2><img src="../../boost.png" width="276" height="86">Header <<a href="../../boost/detail/compressed_pair.hpp">boost/compressed_pair.hpp</a>></h2>
|
|
||||||
<p>All of the contents of <boost/compressed_pair.hpp> are defined inside
|
|
||||||
namespace boost.</p>
|
|
||||||
<p>The class compressed pair is very similar to std::pair, but if either of the
|
|
||||||
template arguments are empty classes, then the "empty base-class optimisation"
|
|
||||||
is applied to compress the size of the pair.</p>
|
|
||||||
<pre>template <class T1, class T2>
|
|
||||||
class compressed_pair
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef T1 first_type;
|
|
||||||
typedef T2 second_type;
|
|
||||||
typedef typename call_traits<first_type>::param_type first_param_type;
|
|
||||||
typedef typename call_traits<second_type>::param_type second_param_type;
|
|
||||||
typedef typename call_traits<first_type>::reference first_reference;
|
|
||||||
typedef typename call_traits<second_type>::reference second_reference;
|
|
||||||
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
|
||||||
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
|
||||||
|
|
||||||
compressed_pair() : base() {}
|
|
||||||
compressed_pair(first_param_type x, second_param_type y);
|
|
||||||
explicit compressed_pair(first_param_type x);
|
|
||||||
explicit compressed_pair(second_param_type y);
|
|
||||||
|
|
||||||
compressed_pair& operator=(const compressed_pair&);
|
|
||||||
|
|
||||||
first_reference first();
|
|
||||||
first_const_reference first() const;
|
|
||||||
|
|
||||||
second_reference second();
|
|
||||||
second_const_reference second() const;
|
|
||||||
|
|
||||||
void swap(compressed_pair& y);
|
|
||||||
};</pre>
|
|
||||||
<p>The two members of the pair can be accessed using the member functions first()
|
|
||||||
and second(). Note that not all member functions can be instantiated for all
|
|
||||||
template parameter types. In particular compressed_pair can be instantiated for
|
|
||||||
reference and array types, however in these cases the range of constructors
|
|
||||||
that can be used are limited. If types T1 and T2 are the same type, then there
|
|
||||||
is only one version of the single-argument constructor, and this constructor
|
|
||||||
initialises both values in the pair to the passed value.</p>
|
|
||||||
<P>Note that if either member is a POD type, then that member is not
|
|
||||||
zero-initialized by the compressed_pair default constructor: it's up to you to
|
|
||||||
supply an initial value for these types if you want them to have a default
|
|
||||||
value.</P>
|
|
||||||
<p>Note that compressed_pair can not be instantiated if either of the template
|
|
||||||
arguments is a union type, unless there is compiler support for
|
|
||||||
boost::is_union, or if boost::is_union is specialised for the union type.</p>
|
|
||||||
<p>Finally, a word of caution for Visual C++ 6 users: if either argument is an
|
|
||||||
empty type, then assigning to that member will produce memory corruption,
|
|
||||||
unless the empty type has a "do nothing" assignment operator defined. This is
|
|
||||||
due to a bug in the way VC6 generates implicit assignment operators.</p>
|
|
||||||
<h3>Acknowledgements</h3>
|
|
||||||
<p>Based on contributions by Steve Cleary, Beman Dawes, Howard Hinnant and John
|
|
||||||
Maddock.</p>
|
|
||||||
<p>Maintained by <a href="mailto:john@johnmaddock.co.uk">John Maddock</a>, the
|
|
||||||
latest version of this file can be found at <a href="http://www.boost.org">www.boost.org</a>,
|
|
||||||
and the boost discussion list at <a href="http://www.yahoogroups.com/list/boost">www.yahoogroups.com/list/boost</a>.</p>
|
|
||||||
<hr>
|
|
||||||
<p>Revised
|
|
||||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->07 November 2007<!--webbot bot="Timestamp" endspan i-checksum="40338" --></p>
|
|
||||||
<p>© Copyright Beman Dawes, 2000.</p>
|
|
||||||
<p>Distributed under the Boost Software License, Version 1.0. See
|
|
||||||
<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -61,6 +61,25 @@ boostbook standalone_base_from_member
|
|||||||
<xsl:param>generate.section.toc.level=1
|
<xsl:param>generate.section.toc.level=1
|
||||||
;
|
;
|
||||||
|
|
||||||
|
xml compressed_pair : compressed_pair.qbk ;
|
||||||
|
boostbook standalone_compressed_pair
|
||||||
|
:
|
||||||
|
compressed_pair
|
||||||
|
:
|
||||||
|
# File name of HTML output:
|
||||||
|
<xsl:param>root.filename=compressed_pair
|
||||||
|
# How far down we chunk nested sections, basically all of them:
|
||||||
|
<xsl:param>chunk.section.depth=0
|
||||||
|
# Don't put the first section on the same page as the TOC:
|
||||||
|
<xsl:param>chunk.first.sections=0
|
||||||
|
# How far down sections get TOC's
|
||||||
|
<xsl:param>toc.section.depth=1
|
||||||
|
# Max depth in each TOC:
|
||||||
|
<xsl:param>toc.max.depth=1
|
||||||
|
# How far down we go with TOC's
|
||||||
|
<xsl:param>generate.section.toc.level=1
|
||||||
|
;
|
||||||
|
|
||||||
xml declval : declval.qbk ;
|
xml declval : declval.qbk ;
|
||||||
boostbook standalone_declval
|
boostbook standalone_declval
|
||||||
:
|
:
|
||||||
|
99
doc/compressed_pair.qbk
Normal file
99
doc/compressed_pair.qbk
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
[/
|
||||||
|
Copyright 2000 Beman Dawes & John Maddock.
|
||||||
|
|
||||||
|
Distributed under the Boost Software License, Version 1.0.
|
||||||
|
|
||||||
|
See accompanying file LICENSE_1_0.txt
|
||||||
|
or copy at http://boost.org/LICENSE_1_0.txt
|
||||||
|
]
|
||||||
|
|
||||||
|
[article Compressed_Pair
|
||||||
|
[quickbook 1.5]
|
||||||
|
[authors [Cleary, Steve]]
|
||||||
|
[authors [Dawes, Beman]]
|
||||||
|
[authors [Hinnant, Howard]]
|
||||||
|
[authors [Maddock, John]]
|
||||||
|
[copyright 2000 Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock]
|
||||||
|
[license
|
||||||
|
Distributed under the Boost Software License, Version 1.0.
|
||||||
|
(See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
[@http://www.boost.org/LICENSE_1_0.txt])
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
[section Overview]
|
||||||
|
|
||||||
|
All of the contents of `<boost/compressed_pair.hpp>` are defined inside
|
||||||
|
`namespace boost`.
|
||||||
|
|
||||||
|
The class `compressed_pair` is very similar to `std::pair`, but if either of
|
||||||
|
the template arguments are empty classes, then the ['empty base-class
|
||||||
|
optimisation] is applied to compress the size of the pair.
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section Synopsis]
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair() : base() {}
|
||||||
|
compressed_pair(first_param_type x, second_param_type y);
|
||||||
|
explicit compressed_pair(first_param_type x);
|
||||||
|
explicit compressed_pair(second_param_type y);
|
||||||
|
|
||||||
|
compressed_pair& operator=(const compressed_pair&);
|
||||||
|
|
||||||
|
first_reference first();
|
||||||
|
first_const_reference first() const;
|
||||||
|
|
||||||
|
second_reference second();
|
||||||
|
second_const_reference second() const;
|
||||||
|
|
||||||
|
void swap(compressed_pair& y);
|
||||||
|
};
|
||||||
|
|
||||||
|
The two members of the pair can be accessed using the member functions
|
||||||
|
`first()` and `second()`. Note that not all member functions can be
|
||||||
|
instantiated for all template parameter types. In particular
|
||||||
|
`compressed_pair` can be instantiated for reference and array types,
|
||||||
|
however in these cases the range of constructors that can be used are
|
||||||
|
limited. If types `T1` and `T2` are the same type, then there is only
|
||||||
|
one version of the single-argument constructor, and this constructor
|
||||||
|
initialises both values in the pair to the passed value.
|
||||||
|
|
||||||
|
Note that if either member is a POD type, then that member is not
|
||||||
|
zero-initialized by the `compressed_pair` default constructor: it's up
|
||||||
|
to you to supply an initial value for these types if you want them to have
|
||||||
|
a default value.
|
||||||
|
|
||||||
|
Note that `compressed_pair` can not be instantiated if either of the
|
||||||
|
template arguments is a union type, unless there is compiler support for
|
||||||
|
`boost::is_union`, or if `boost::is_union` is specialised for the union
|
||||||
|
type.
|
||||||
|
|
||||||
|
Finally, a word of caution for Visual C++ 6 users: if either argument is an
|
||||||
|
empty type, then assigning to that member will produce memory corruption,
|
||||||
|
unless the empty type has a "do nothing" assignment operator defined. This
|
||||||
|
is due to a bug in the way VC6 generates implicit assignment operators.
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section Acknowledgments]
|
||||||
|
|
||||||
|
Based on contributions by Steve Cleary, Beman Dawes, Howard Hinnant and
|
||||||
|
John Maddock.
|
||||||
|
|
||||||
|
Maintained by [@mailto:john@johnmaddock.co.uk John Maddock].
|
||||||
|
|
||||||
|
[endsect]
|
@ -6,7 +6,7 @@
|
|||||||
// See http://www.boost.org/libs/utility for most recent version including documentation.
|
// See http://www.boost.org/libs/utility for most recent version including documentation.
|
||||||
|
|
||||||
// compressed_pair: pair that "compresses" empty members
|
// compressed_pair: pair that "compresses" empty members
|
||||||
// (see libs/utility/compressed_pair.htm)
|
// (see libs/utility/doc/html/compressed_pair.html)
|
||||||
//
|
//
|
||||||
// JM changes 25 Jan 2004:
|
// JM changes 25 Jan 2004:
|
||||||
// For the case where T1 == T2 and both are empty, then first() and second()
|
// For the case where T1 == T2 and both are empty, then first() and second()
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<a href="utility.htm#BOOST_BINARY">BOOST_BINARY</a><br>
|
<a href="utility.htm#BOOST_BINARY">BOOST_BINARY</a><br>
|
||||||
<a href="call_traits.htm">call_traits</a><br>
|
<a href="call_traits.htm">call_traits</a><br>
|
||||||
<a href="checked_delete.html">checked_delete</a><br>
|
<a href="checked_delete.html">checked_delete</a><br>
|
||||||
<a href="compressed_pair.htm">compressed_pair</a><br>
|
<a href="doc/html/compressed_pair.html">compressed_pair</a><br>
|
||||||
<a href="doc/html/declval.html">declval</a><br>
|
<a href="doc/html/declval.html">declval</a><br>
|
||||||
<a href="enable_if.html">enable_if</a><br>
|
<a href="enable_if.html">enable_if</a><br>
|
||||||
<a href="in_place_factories.html">in_place_factory</a><br>
|
<a href="in_place_factories.html">in_place_factory</a><br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user