| |
 | Posted by IchorDev in reply to Paul Backus | Permalink Reply |
|
IchorDev 
Posted in reply to Paul Backus
| On Thursday, 11 September 2025 at 04:19:02 UTC, Paul Backus wrote:
> The problem is not really with placement new, it's with constructors. Constructors are allowed to mutate immutable objects (under the assumption that they are initializing a newly-created object). If you call a constructor twice on the same immutable object, which is possible with placement new, it can result in undefined behavior.
But that's the thing: all I want is to construct objects into freshly-allocated, uninitialised memory; so my desired use-case has a safe interface and can therefore be marked @trusted . However the constructor is a wildcard, so I want to leave that part to attribute inference.
Do you think it'd be worth submitting an enhancement issue to add something simple like this?
new @trusted (buffer) S(500); //we trust that the buffer is safe to use, but not S's constructor.
The weird placement new syntax means that this looks a bit goofy, but it's better than the feature being essentially dead-on-arrival for the one thing I'd ever want it for.
|