On Tuesday, 27 March 2018 at 15:28:40 UTC, jmh530 wrote:
        static if (isMutable!T)
            bag[0] = rhs;
        else
            bag = [rhs];

I like this idea. I'd even take it a step futher:

When T is a pointer or class reference, then we can put the reference on the stack (instead of into the array) and handle assignments like Rebindable handles assignments -- provided that Rebindable really is 100 % safe to the outside, see my concerns from 2 posts above. In this case (static if), we won't even declare the array T[] bag, and instead implement as T value, bool isPresent.

When T is a mutable value type, it goes on the stack, too. Again no array.

When T is a const/immutable/inout value type, we declare the array as before and rebind on assignment with bag = [rhs], as you proposed here.

-- Simon

Reply via email to