That's exactly how the original WinAPI does it. All handles are pointers to their own dummy structures. The current druntime WinAPI just aliases all handle types to HANDLE, which is itself an alias to void*. This is very wrong.
On Friday, 23 November 2012 at 13:57:14 UTC, Vladimir Panteleev wrote:Oh, I think I remembered. I believe the proper solution is to create a dummy struct type, and make HANDLE a const pointer to it. Then it cannot be confused with other types, but still accepts null assignments.
If breaking code were not an issue, the best solution would be to make HANDLE a unique, opaque type (like a struct wrapping an intptr_t or void*) - which is exactly how it should be treated. It would need to support assignment/creation from "null" though.