On Wednesday, 26 February 2025 at 23:47:41 UTC, Arredondo wrote:
On Wednesday, 26 February 2025 at 10:19:17 UTC, Hipreme wrote:

    ```d
    struct S
    {
        int[100] a;
        int b = 0;
        static S defaultInit(int b)
        {
           S s = void;
           s.b = b;
           return s;
        }
    }
    ```

Thank you for this Hipreme. I do have a question though, wouldn't this create two copies of S? one at construction and then another at the call site after defaultInit returns?

Regarding safety, I'm well aware I'm playing with fire here. For now I'm just experimenting to see if something like this is even worth it performance-wise.

Cheers!
Arredondo.

Yes, that is definitely worth performance wise.
Specially if you wish to start using an array of `S`, this could be a huge toll.

And no, it won't create 2 copies. D has a thing called Return Value Optimization. Since that local variable is returned, it has no need to copy it.


Reply via email to