Created on 2023-12-16.00:00:00 last changed yesterday
Proposed resolution:
This wording is relative to N4964.
Modify [util.smartptr.shared.create] as indicated:
template<class T, ...> shared_ptr<T> make_shared(args); template<class T, class A, ...> shared_ptr<T> allocate_shared(const A& a, args); template<class T, ...> shared_ptr<T> make_shared_for_overwrite(args); template<class T, class A, ...> shared_ptr<T> allocate_shared_for_overwrite(const A& a, args);[…]
-7- Remarks:
[…]
(7.11) — When a (sub)object of non-array type U that was initialized by make_shared, make_shared_for_overwrite, or allocate_shared_for_overwrite is to be destroyed, it is destroyed via the expression pv->~U() where pv points to that object of type U.
[…]
[ 2024-08-21; Move to Ready at LWG telecon ]
[ 2024-03-11; Reflector poll ]
Set priority to 2 after reflector poll in December 2023.
This was the P1020R1 author's intent (see LWG reflector mail in November 2018) but it was never clarified in the wording. This fixes that.
Currently, only destructions of non-array (sub)objects created in std::make_shared and std::allocate_shared are specified in [util.smartptr.shared.create]. Presumably, objects created in std::make_shared_for_overwrite and std::allocate_shared_for_overwrite should be destroyed by plain destructor calls.
History | |||
---|---|---|---|
Date | User | Action | Args |
2024-11-19 16:09:07 | admin | set | status: ready -> voting |
2024-08-21 17:27:04 | admin | set | messages: + msg14336 |
2024-08-21 17:27:04 | admin | set | status: new -> ready |
2024-03-11 22:16:42 | admin | set | messages: + msg13990 |
2023-12-16 14:01:33 | admin | set | messages: + msg13890 |
2023-12-16 00:00:00 | admin | create |