diff --git a/compressed_pair.htm b/compressed_pair.htm deleted file mode 100644 index f054d08..0000000 --- a/compressed_pair.htm +++ /dev/null @@ -1,76 +0,0 @@ - - - Header - - - - - - -

Header <boost/compressed_pair.hpp>

-

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.

-
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.

-

Acknowledgements

-

Based on contributions by Steve Cleary, Beman Dawes, Howard Hinnant and John - Maddock.

-

Maintained by John Maddock, the - latest version of this file can be found at www.boost.org, - and the boost discussion list at www.yahoogroups.com/list/boost.

-
-

Revised - 07 November 2007

-

© Copyright Beman Dawes, 2000.

-

Distributed under the Boost Software License, Version 1.0. See -www.boost.org/LICENSE_1_0.txt

- - - \ No newline at end of file diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 813697e..eb9c35d 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -61,6 +61,25 @@ boostbook standalone_base_from_member generate.section.toc.level=1 ; +xml compressed_pair : compressed_pair.qbk ; +boostbook standalone_compressed_pair + : + compressed_pair + : + # File name of HTML output: + root.filename=compressed_pair + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=0 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=0 + # How far down sections get TOC's + toc.section.depth=1 + # Max depth in each TOC: + toc.max.depth=1 + # How far down we go with TOC's + generate.section.toc.level=1 + ; + xml declval : declval.qbk ; boostbook standalone_declval : diff --git a/doc/compressed_pair.qbk b/doc/compressed_pair.qbk new file mode 100644 index 0000000..eac4266 --- /dev/null +++ b/doc/compressed_pair.qbk @@ -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 `` 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 compressed_pair + { + public: + typedef T1 first_type; + typedef T2 second_type; + typedef typename call_traits::param_type first_param_type; + typedef typename call_traits::param_type second_param_type; + typedef typename call_traits::reference first_reference; + typedef typename call_traits::reference second_reference; + typedef typename call_traits::const_reference first_const_reference; + typedef typename call_traits::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] diff --git a/include/boost/detail/compressed_pair.hpp b/include/boost/detail/compressed_pair.hpp index 3f32645..5dc21e2 100644 --- a/include/boost/detail/compressed_pair.hpp +++ b/include/boost/detail/compressed_pair.hpp @@ -6,7 +6,7 @@ // See http://www.boost.org/libs/utility for most recent version including documentation. // 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: // For the case where T1 == T2 and both are empty, then first() and second() diff --git a/index.html b/index.html index 04cc305..1275a81 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ BOOST_BINARY
call_traits
checked_delete
- compressed_pair
+ compressed_pair
declval
enable_if
in_place_factory