How come isMutable returns true for structs that cannot be modified
aliak
something at something.com
Fri Jul 27 15:18:33 UTC 2018
On Friday, 27 July 2018 at 14:48:06 UTC, Steven Schveighoffer
wrote:
> On 7/27/18 9:10 AM, aliak wrote:
>> import std.traits: isMutable;
>> struct S {
>> immutable int i = 3;
>> }
>>
>> pragma(msg, isMutable!S);
>>
>> void main() {
>> S s;
>> s = S();
>> }
>
> isMutable only takes the type into account, it doesn't look to
> see if all the internals are mutable.
>
> It literally is this:
>
> enum bool isMutable(T) = !is(T == const) && !is(T == immutable)
> && !is(T == inout);
>
>> And is there a trait that takes the transitivity of
>> immutability in to account?
>
> I think you are looking for
> https://dlang.org/phobos/std_traits.html#isAssignable
>
> -Steve
Ah! Yes I think I am. Thanks!
More information about the Digitalmars-d-learn
mailing list