I would like to suggest having the following code raise a compile-time warning:
```
x = x;
```
Other than invoking the copy constructor, this is a no-op.
I had the following piece of code, which for "some reason" didn't work:
```
struct FuncPtr{
void* ptr;
this(void* ptr){
ptr = ptr;
}
...
}
```
Locating this wasn't immediate, and I don't see valid reasons for someone to purposely write such a code.
I suggest at least raising a compile-time warning.
Much easier than to hunt for nulls in runtime.