Why not just 
```D
*receiver = to!(typeof(*receiver))(val);
```
It throws pretty much the same error message (`std\conv.d(1684): Unexpected ' ' when converting from type string to type E`). Plus, since we don't actually have a `GetOptException`, I see no problem throwing a `ConvException` over an `EnforceException`.

Furthermore, that's the approach that's taken for `string`, `real` and `array`, so it's not new behavior anyways.

Also, while you are at it, the `bool` branch has the exact same issue (`"trueueueue"` passes). Could you fix it up too?