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.

-Steve

Reply via email to