On Saturday, 24 June 2017 at 21:41:22 UTC, Moritz Maxeiner wrote:
Hi, unfortunately not:
- Operator overloading is supported via member functions only
[1].
- Corollary: You cannot overload operators for builtin types
(i.e. where the cast gets rewritten to `e.opOverloaded` where
`e` is a builtin type)
- opCast needs to be defined for the type that you are casting
from [2], not the one you are casting to
=> You cannot overload opCast for casting from builtin types
[...]
You cannot. As any such cast operation would have to create a
new A object, anyway (and would as such be a wrapper around a
(possibly default) constructor), I suggest using elaborate
constructors:
Thank you for your detailed explanation!
Word of warning, though: What you're doing is highly unsafe.
I guess it is unsafe, but core.sys.windows module works this way.
That *is* how the Windows C API works AFAIK.
I have no choice except for using it as it is.
Define a struct for HWND as shown above for A and use
constructors. Add an `alias this` to the wrapped pointer value.
That was the first thing I did. And it is led me to my question.
Thank you!