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?
```d
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.
  • Re: Placement ne... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
    • Re: Placeme... IchorDev via Digitalmars-d-learn
      • Re: Pla... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
        • Re:... IchorDev via Digitalmars-d-learn
          • ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
            • ... IchorDev via Digitalmars-d-learn
              • ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
              • ... IchorDev via Digitalmars-d-learn
          • ... Paul Backus via Digitalmars-d-learn
            • ... IchorDev via Digitalmars-d-learn
              • ... Nick Treleaven via Digitalmars-d-learn

Reply via email to