Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r76177 - in trunk/libs: container/doc interprocess/doc intrusive/doc
From: igaztanaga_at_[hidden]
Date: 2011-12-26 11:37:50


Author: igaztanaga
Date: 2011-12-26 11:37:49 EST (Mon, 26 Dec 2011)
New Revision: 76177
URL: http://svn.boost.org/trac/boost/changeset/76177

Log:
Documentation update
Text files modified:
   trunk/libs/container/doc/container.qbk | 40 ++++++++++++++++++++++------------------
   trunk/libs/interprocess/doc/interprocess.qbk | 4 ++--
   trunk/libs/intrusive/doc/intrusive.qbk | 16 ++++++++--------
   3 files changed, 32 insertions(+), 28 deletions(-)

Modified: trunk/libs/container/doc/container.qbk
==============================================================================
--- trunk/libs/container/doc/container.qbk (original)
+++ trunk/libs/container/doc/container.qbk 2011-12-26 11:37:49 EST (Mon, 26 Dec 2011)
@@ -412,7 +412,7 @@
 
 [endsect]
 
-[section:alloc_traits_move_traits Stateful allocators and Scoped allocators]
+[section:alloc_traits_move_traits Stateful allocators]
 
 C++03 was not stateful-allocator friendly. For compactness of container objects and for
 simplicity, it did not require containers to support allocators with state: Allocator objects
@@ -422,24 +422,18 @@
 by one allocator object could be deallocated by another instance of the same type) and
 allocators were not swapped when the container was swapped.
 
-Many C++ container implementors felt C++03 guarantees were too weak and started to offer extensions.
-[*Boost.Container], following [@http://www.boost.org/libs/interprocess/ Boost.Interprocess]
-containers experience supporting stateful allocators, offers the following guarantees:
-
-* Allocators are copy-constructed in copy/move constructors
-* If possible, a single allocator is hold to construct `value_type` and this allocator is copy constructed
- from the user-supplied allocator object during container's constructor. If the container needs an auxiliary
- allocator (e.g. a array allocator used by `deque` or `stable_vector`), that allocator is also
- copy-constructed from the user-supplied allocator when the container is constructed (i.e. it's
- not constructed on the fly when auxiliary memory is needed).
-* Allocators are compared for equality when swapping containers. If allocators don't compare
- equal allocators are swapped using an unqualified `swap` call.
-
 C++11 further improves stateful allocator support through the
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2554.pdf
-Scoped Allocators model], using classes like `std::scoped_allocator_adaptor` and `std::allocator_traits`.
-[*Boost.Container does not support it yet, but there are plans to do so and backport scoped allocator
-support to C++03 compilers.
+Scoped Allocators model]. [@http://en.cppreference.com/w/cpp/memory/allocator_traits
+`std::allocator_traits`] is the protocol between a container and an allocator, and
+an allocator writer can customize its behaviour (should the container propagate it in
+move constructor, swap, etc.?) following `allocator_traits` requirements. [*Boost.Container]
+not only supports this model with C++11 but also [*backports it to C++03].
+
+If possible, a single allocator is hold to construct `value_type`. If the container needs an auxiliary
+allocator (e.g. a array allocator used by `deque` or `stable_vector`), that allocator is also
+constructed from the user-supplied allocator when the container is constructed (i.e. it's
+not constructed on the fly when auxiliary memory is needed).
 
 [endsect]
 
@@ -451,7 +445,14 @@
 
 [endsect]
 
-[section:Vector_bool vector<bool>]
+[section:forward_list `forward_list<T>`]
+
+[*Boost.Container] does not offer C++11 `forward_list` container yet, but it will be available in future
+versions.
+
+[endsect]
+
+[section:Vector_bool `vector<bool>`]
 
 `vector<bool>` specialization has been quite problematic, and there have been several
 unsuccessful tries to deprecate or remove it from the standard. [*Boost.Container] does not implement it
@@ -591,6 +592,9 @@
   [@https://svn.boost.org/trac/boost/ticket/6287 #6287],
   [@https://svn.boost.org/trac/boost/ticket/4383 #4383].
 
+* Added `allocator_traits` support for both C++11 and C++03
+ compilers through an internal `allocator_traits` clone.
+
 [endsect]
 
 [section:release_notes_boost_1_48_00 Boost 1.48 Release]

Modified: trunk/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- trunk/libs/interprocess/doc/interprocess.qbk (original)
+++ trunk/libs/interprocess/doc/interprocess.qbk 2011-12-26 11:37:49 EST (Mon, 26 Dec 2011)
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2007-2009 Ion Gaztanaga
+ / Copyright (c) 2005-2011 Ion Gaztanaga
  /
  / 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)
@@ -8,7 +8,7 @@
 [library Boost.Interprocess
     [quickbook 1.4]
     [authors [Gaztanaga, Ion]]
- [copyright 2005- 2010 Ion Gaztanaga]
+ [copyright 2005- 2011 Ion Gaztanaga]
     [id interprocess]
     [dirname interprocess]
     [purpose Interprocess communication utilities]

Modified: trunk/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- trunk/libs/intrusive/doc/intrusive.qbk (original)
+++ trunk/libs/intrusive/doc/intrusive.qbk 2011-12-26 11:37:49 EST (Mon, 26 Dec 2011)
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2007-2010 Ion Gaztanaga
+ / Copyright (c) 2006-2011 Ion Gaztanaga
  /
  / 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)
@@ -8,7 +8,7 @@
 [library Boost.Intrusive
     [quickbook 1.4]
     [authors [Krzikalla, Olaf], [Gaztanaga, Ion]]
- [copyright 2005 Olaf Krzikalla, 2006-2010 Ion Gaztanaga]
+ [copyright 2005 Olaf Krzikalla, 2006-2011 Ion Gaztanaga]
     [id intrusive]
     [dirname intrusive]
     [purpose Intrusive containers]
@@ -2313,13 +2313,13 @@
 
 [section:smart_pointers_requirements Requirements for smart pointers compatible with Boost.Intrusive]
 
-Not every smart pointer is compatible with [*Boost.Intrusive]; the smart pointer must
-have the following features:
+Not every smart pointer is compatible with [*Boost.Intrusive]:
 
-* It must support the same operations as a raw pointer, except casting.
-* It must be convertible to a raw pointer and constructible from a raw pointer.
-* It must have the same ownership semantics as a raw pointer. This means that
- resource management smart pointers (like `boost::shared_ptr`) can't be used.
+ * It must be compatible with C++11 [@http://en.cppreference.com/w/cpp/memory/pointer_traits `std::pointer_traits`]
+ requirements. [*Boost.Intrusive] uses its own [classref boost::intrusive::pointer_traits pointer_traits]
+ class to implement those features in both C++11 and C++03 compilers.
+ * It must have the same ownership semantics as a raw pointer. This means that
+ resource management smart pointers (like `boost::shared_ptr`) can't be used.
 
 The conversion from the smart pointer to a raw pointer will be implemented as a recursive call to
 `operator->()` until the function returns a raw pointer.


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk