How come isMutable returns true for structs that cannot be modified
Steven Schveighoffer
schveiguy at gmail.com
Fri Jul 27 14:48:06 UTC 2018
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
More information about the Digitalmars-d-learn
mailing list