[allocator.adaptor.cnstr] # 20 Memory management library [[mem]](./#mem) ## 20.6 Class template scoped_allocator_adaptor [[allocator.adaptor]](allocator.adaptor#cnstr) ### 20.6.3 Constructors [allocator.adaptor.cnstr] [🔗](#lib:scoped_allocator_adaptor,constructor) `scoped_allocator_adaptor(); ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8787) *Effects*: Value-initializes the OuterAlloc base class and the inner allocator object[.](#1.sentence-1) [🔗](#lib:scoped_allocator_adaptor,constructor_) `template scoped_allocator_adaptor(OuterA2&& outerAlloc, const InnerAllocs&... innerAllocs) noexcept; ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8800) *Constraints*: is_constructible_v is true[.](#2.sentence-1) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8804) *Effects*: Initializes the OuterAlloc base class withstd​::​forward(outerAlloc) and inner with innerAllocs... (hence recursively initializing each allocator within the adaptor with the corresponding allocator from the argument list)[.](#3.sentence-1) [🔗](#lib:scoped_allocator_adaptor,constructor__) `scoped_allocator_adaptor(const scoped_allocator_adaptor& other) noexcept; ` [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8818) *Effects*: Initializes each allocator within the adaptor with the corresponding allocator from other[.](#4.sentence-1) [🔗](#lib:scoped_allocator_adaptor,constructor___) `scoped_allocator_adaptor(scoped_allocator_adaptor&& other) noexcept; ` [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8830) *Effects*: Move constructs each allocator within the adaptor with the corresponding allocator from other[.](#5.sentence-1) [🔗](#lib:scoped_allocator_adaptor,constructor____) `template scoped_allocator_adaptor( const scoped_allocator_adaptor& other) noexcept; ` [6](#6) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8844) *Constraints*: is_constructible_v is true[.](#6.sentence-1) [7](#7) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8848) *Effects*: Initializes each allocator within the adaptor with the corresponding allocator from other[.](#7.sentence-1) [🔗](#lib:scoped_allocator_adaptor,constructor_____) `template scoped_allocator_adaptor(scoped_allocator_adaptor&& other) noexcept; ` [8](#8) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8861) *Constraints*: is_constructible_v is true[.](#8.sentence-1) [9](#9) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L8865) *Effects*: Initializes each allocator within the adaptor with the corresponding allocator rvalue from other[.](#9.sentence-1)