std::scoped_allocator_adaptor<OuterAlloc,InnerAlloc...>::outermost, outermost-construct, outermost-destroy
template< class Alloc > /* unspecified */ /*outermost*/( Alloc&& alloc = *this ); | (1) | (только для иллюстрации*) |
template< class T, class... Args > void /*outermost-construct*/( T* p, Args&&... args ); | (2) | (только для иллюстрации*) |
template< class T > void /*outermost-destroy*/( T* p ); | (3) | (только для иллюстрации*) |
Эти вспомогательные шаблоны функций-членов, предназначенные только для иллюстрации, используются в функциях-членах construct() и destroy().
alloc. - Если выражение
alloc.outer_allocator()корректно, возвращаетoutermost (alloc.outer_allocator()). - В противном случае возвращает
alloc.
2,3) Конструирует или уничтожает объект с использованием самого внешнего аллокатора
*this.
Для типа std::allocator_traits<std::remove_reference_t<decltype(
outermost ())>> в качестве outermost_traits:
2) Эквивалентно
outermost_traits::construct(outermost (), p, std::forward<Args>(args)...);.
3) Эквивалентно
outermost_traits::destroy(outermost (), p);.Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение согласно опубликованной версии | Правильное поведение |
|---|---|---|---|
| LWG 3116 | C++11 | условием рекурсии для outermost было «allocимеет функцию-член outer_allocator()» | изменено на «выражениеalloc.outer_allocator() корректно» |
См. также
|
[статическая] | конструирует объект в выделенной памяти (шаблон функции) |
|
[статическая] | разрушает объект, хранящийся в выделенной памяти (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/scoped_allocator_adaptor/helpers