More documentation updates

This commit is contained in:
Glen Fernandes 2019-05-03 21:20:34 -04:00
parent a90dc39e06
commit 14fb9e4433
3 changed files with 29 additions and 7 deletions

View File

@ -82,7 +82,7 @@ std::size_t n);`]
[[variablelist [[variablelist
[[Requires][`A` is an /Allocator/]] [[Requires][`A` is an /Allocator/]]
[[Effects] [[Effects]
[Destroys each /i/th element in reverse order by calling [Destroys each ['i]th element in reverse order by calling
`std::allocator_traits<A>::destroy(a, &p[i])`.]]]]] `std::allocator_traits<A>::destroy(a, &p[i])`.]]]]]
[[`template<class A, class T, class U> void alloc_construct(A& a, T* p, [[`template<class A, class T, class U> void alloc_construct(A& a, T* p,
U&&... u);`] U&&... u);`]
@ -95,20 +95,20 @@ std::size_t n);`]
[[variablelist [[variablelist
[[Requires][`A` is an /Allocator/]] [[Requires][`A` is an /Allocator/]]
[[Effects] [[Effects]
[Constructs each /i/th element in order by calling [Constructs each ['i]th element in order by calling
`std::allocator_traits<A>::construct(a, &p[i])`.]] `std::allocator_traits<A>::construct(a, &p[i])`.]]
[[Remarks] [[Remarks]
[If an exception is thrown, destroys each already constructed /j/th element in [If an exception is thrown destroys each already constructed ['j]th element in
reverse order by calling `std::allocator_traits<A>::destroy(a, &p[j])`.]]]]] reverse order by calling `std::allocator_traits<A>::destroy(a, &p[j])`.]]]]]
[[`template<class A, class T> void alloc_construct_n(A& a, T* p, std::size_t n, [[`template<class A, class T> void alloc_construct_n(A& a, T* p, std::size_t n,
const T* l, std::size_t m);`] const T* l, std::size_t m);`]
[[variablelist [[variablelist
[[Requires][`A` is an /Allocator/]] [[Requires][`A` is an /Allocator/]]
[[Effects] [[Effects]
[Constructs each /i/th element in order by calling [Constructs each ['i]th element in order by calling
`std::allocator_traits<A>::construct(a, &p[i], l[i % m])`.]] `std::allocator_traits<A>::construct(a, &p[i], l[i % m])`.]]
[[Remarks] [[Remarks]
[If an exception is thrown, destroys each already constructed /j/th element in [If an exception is thrown destroys each already constructed ['j]th element in
reverse order by calling `std::allocator_traits<A>::destroy(a, &p[j])`.]]]]]] reverse order by calling `std::allocator_traits<A>::destroy(a, &p[j])`.]]]]]]
[endsect] [endsect]
@ -117,8 +117,9 @@ reverse order by calling `std::allocator_traits<A>::destroy(a, &p[j])`.]]]]]]
[section Acknowledgments] [section Acknowledgments]
Glen Fernandes originally implemented this functionality in Boost.Smart_ptr and Glen Fernandes originally implemented this functionality in Boost.Smart_Ptr and
later moved these functions to Boost.Core for use in multiple Boost libraries. later moved these functions to Boost.Core for use in other Boost libraries,
such as Boost.Multi_Array.
[endsect] [endsect]

View File

@ -38,6 +38,19 @@ template<class Key, class Compare = std::less<Key>,
class FlatSet; class FlatSet;
``` ```
Facilities like `make_shared` can be implemented using `allocate_shared` with
`default_allocator`.
```
template<class T, class... Args>
enable_if_t<!is_array_v<T>, shared_ptr<T> >
make_shared(Args&&... args)
{
return allocate_shared<T>(boost::default_allocator<remove_cv_t<T> >(),
std::forward<Args>(args)...);
}
```
[endsect] [endsect]
[section Reference] [section Reference]

View File

@ -169,4 +169,12 @@ const noinit_adaptor<U>& rhs) noexcept;`]
[endsect] [endsect]
[section Compatibility]
When `BOOST_NO_CXX11_ALLOCATOR` is defined, and the C++11 allocator model is
not supported, these functions invoke constructors and destructors directly
without going through the supplied allocator.
[endsect]
[endsect] [endsect]