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
[[Requires][`A` is an /Allocator/]]
[[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])`.]]]]]
[[`template<class A, class T, class U> void alloc_construct(A& a, T* p,
U&&... u);`]
@ -95,20 +95,20 @@ std::size_t n);`]
[[variablelist
[[Requires][`A` is an /Allocator/]]
[[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])`.]]
[[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])`.]]]]]
[[`template<class A, class T> void alloc_construct_n(A& a, T* p, std::size_t n,
const T* l, std::size_t m);`]
[[variablelist
[[Requires][`A` is an /Allocator/]]
[[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])`.]]
[[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])`.]]]]]]
[endsect]
@ -117,8 +117,9 @@ reverse order by calling `std::allocator_traits<A>::destroy(a, &p[j])`.]]]]]]
[section Acknowledgments]
Glen Fernandes originally implemented this functionality in Boost.Smart_ptr and
later moved these functions to Boost.Core for use in multiple Boost libraries.
Glen Fernandes originally implemented this functionality in Boost.Smart_Ptr and
later moved these functions to Boost.Core for use in other Boost libraries,
such as Boost.Multi_Array.
[endsect]

View File

@ -38,6 +38,19 @@ template<class Key, class Compare = std::less<Key>,
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]
[section Reference]

View File

@ -169,4 +169,12 @@ const noinit_adaptor<U>& rhs) noexcept;`]
[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]