Created on 2025-08-06.00:00:00 last changed 3 weeks ago
Proposed resolution:
This wording is relative to N5014.
Modify [allocator.uses.construction] as indicated:
-2- The following utility functions support three conventions for passing `alloc` to a constructor:
(2.1) — […]
(2.2) — Otherwise, if `T` has a constructor invocable as T(
allocator_argallocator_arg_t{}, alloc, args...) (leading-allocator convention), then uses-allocator construction chooses this constructor form.(2.3) — […]
Currently, [allocator.uses.construction] bullet 2.2 states:
Otherwise, if `T` has a constructor invocable as `T(allocator_arg, alloc, args...)` (leading-allocator convention), […]
However, when forming construction arguments in the utility functions, we're actually using cv-unqualified rvalue of `allocator_arg_t`, which can be inferred from using plain `allocator_arg_t` but not const allocator_arg_t& in [allocator.uses.construction] bullet 5.2.
It seems that such mismatch was present even since C++11 (per N3337 [allocator.uses.construction]/1.2). If the use of plain `allocator_arg_t` is considered correct, I think we should fix the description.History | |||
---|---|---|---|
Date | User | Action | Args |
2025-08-09 17:03:03 | admin | set | messages: + msg14929 |
2025-08-06 00:00:00 | admin | create |