Created on 2016-06-27.00:00:00 last changed 20 months ago
Proposed resolution (September, 2019):
Change 18.104.22.168 [expr.new] paragraph 18 as follows, splitting the running text into bullets:
Overload resolution is performed on a function call created by assembling an argument list. The first argument is the amount of space requested, and has type std::size_t. If the type of the allocated object has new-extended alignment, the next argument is the type's alignment, and has type std::align_val_t. If the new-placement syntax is used, the initializer-clauses in its expression-list are the succeeding arguments. If no matching function is found
andthe allocated object type has new-extended alignment, the alignment argument is removed from the argument list ,
and overload resolution is performed again.
[Adopted as a DR at the November, 2019 meeting.]
The fallback treatment for alignment and non-alignment allocation and deallocation functions is asymmetric. While a deletion of a non-overaligned class object will match a class-specific alignment deallocation function if no class-specific non-alignment deallocation function is provided, the same is not true for allocation: a new-expression for a non-overaligned class type will fail if an alignment allocation function is provided with no non-alignment allocation function. The allocation behavior should be changed to match the deallocation behavior.
|2020-12-15 00:00:00||admin||set||messages: + msg6440|
|2020-12-15 00:00:00||admin||set||status: drafting -> c++20|