cpp/experimental/polymorphic allocator/construct

Constructs an object in allocated, but not initialized storage pointed to by the provided constructor arguments. If the object is of type that itself uses allocators, or if it is std::pair, passes down to the constructed object.

1) If (the type  does not use allocators) and, then constructs the object as if by.

Otherwise, if (the type  uses allocators, e.g. it is a container) and, then constructs the object as if by.

Otherwise, if (the type  uses allocators, e.g. it is a container) and, then constructs the object as if by.

Otherwise, the program is ill-formed.

2) First, if either or  is allocator-aware, modifies the tuples  and  to include, resulting in the two new tuples  and , according to the following three rules:

2a) if is not allocator-aware  and, then  is , unmodified.

2b) if is allocator-aware, and its constructor takes an allocator tag (, then  is

2c) if is allocator-aware, and its constructor takes the allocator as the last argument , then  is.

2d) Otherwise, the program is ill-formed.

Same rules apply to and the replacement of  with.

Once and  are constructed, constructs the pair  in allocated storage as if by

3) Equivalent to, that is, passes the memory resource on to the pair's member types if they accept them.

4) Equivalent to

5) Equivalent to

6) Equivalent to

Return value
(none)