mirror of
https://github.com/boostorg/utility.git
synced 2026-05-05 20:24:26 +02:00
4ca0c3b7c2
https://svn.boost.org/svn/boost/trunk ........ r40889 | nikiml | 2007-11-07 08:06:55 -0800 (Wed, 07 Nov 2007) | 1 line added forgotten array_object_manager_traits::get_pytype ........ r40890 | bemandawes | 2007-11-07 08:08:09 -0800 (Wed, 07 Nov 2007) | 1 line Copyright and/or License cleanup ........ r40892 | nesotto | 2007-11-07 08:54:10 -0800 (Wed, 07 Nov 2007) | 1 line changed constants to inline function to avoid ODR problems ........ r40893 | garcia | 2007-11-07 09:06:19 -0800 (Wed, 07 Nov 2007) | 2 lines changed url to the right one. ........ r40894 | johnmaddock | 2007-11-07 09:17:39 -0800 (Wed, 07 Nov 2007) | 1 line Added support for VC9. ........ r40895 | johnmaddock | 2007-11-07 09:21:41 -0800 (Wed, 07 Nov 2007) | 1 line Regenerated docs to add license info. ........ r40896 | johnmaddock | 2007-11-07 09:38:19 -0800 (Wed, 07 Nov 2007) | 2 lines Removed PDF docs: we'll put these somewhere else. Fixed some license/copyright issues. ........ r40897 | igaztanaga | 2007-11-07 09:55:18 -0800 (Wed, 07 Nov 2007) | 1 line Increased shared memory size, since it was insufficient for 64 bit applications ........ r40898 | jhunold | 2007-11-07 10:06:31 -0800 (Wed, 07 Nov 2007) | 4 lines Fix: remove <user-interface>gui from usage-requirements of QtGui. Rationale: <user-interface>gui merely disables console output window on <target-os>windows. But users often need console debug output when running Gui apps. ........ r40900 | johnmaddock | 2007-11-07 10:26:11 -0800 (Wed, 07 Nov 2007) | 1 line Added license info. ........ r40901 | johnmaddock | 2007-11-07 10:27:08 -0800 (Wed, 07 Nov 2007) | 1 line Added license info. ........ r40902 | johnmaddock | 2007-11-07 10:29:00 -0800 (Wed, 07 Nov 2007) | 1 line Added copyright. ........ r40903 | johnmaddock | 2007-11-07 10:38:23 -0800 (Wed, 07 Nov 2007) | 1 line Added license info. ........ r40906 | guwi17 | 2007-11-07 11:34:03 -0800 (Wed, 07 Nov 2007) | 2 lines - io.hpp: added missing include ........ r40907 | danieljames | 2007-11-07 12:27:25 -0800 (Wed, 07 Nov 2007) | 1 line Copied Joel's license changes to the xhtml stylesheet. ........ r40912 | bemandawes | 2007-11-07 13:54:48 -0800 (Wed, 07 Nov 2007) | 1 line Initial commit. The starting point for the reference documentation is N1975, Filesystem Library Proposal for TR2 (Revision 3). ........ r40914 | pdimov | 2007-11-07 14:47:55 -0800 (Wed, 07 Nov 2007) | 1 line Attempt unspecified bool fix for Sun 5.7-5.9 ........ r40916 | bemandawes | 2007-11-07 17:47:36 -0800 (Wed, 07 Nov 2007) | 1 line Explicitly say 'no top-posting'. Add links to Wikipedia posting article ........ r40918 | bemandawes | 2007-11-07 18:55:21 -0800 (Wed, 07 Nov 2007) | 1 line Cope with larger errno on 64-bit systems ........ r40919 | chris_kohlhoff | 2007-11-07 20:10:14 -0800 (Wed, 07 Nov 2007) | 2 lines Eliminate the need for an extra thread to perform timer dispatching. ........ [SVN r40922]
76 lines
4.3 KiB
HTML
76 lines
4.3 KiB
HTML
<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> |