On 2/2/18 9:19 AM, aliak wrote:
To further explain what I mean:
struct A if (!is(this == immutable) && !is(this == shared))
shared a = A() // error
auto a = A() // ok
immutable a = A() // error
const a = A() // ok
In this case, no. A struct is bit-copyable, so you must be able to move
it bit-by-bit to another copy.
In the case of attribute addition or removal, the compiler allows
anything as long as there are no reference types contained in the
struct. Your example has no members, which means no references, so it's
a value type.
If you put a pointer inside your struct, you will get the behavior you
are looking for I think. However, you may have to disable the
constructor for your exact requirements above.