Derived type

novice2 sorryno at em.ail
Tue Mar 30 19:02:09 UTC 2021


On Tuesday, 30 March 2021 at 14:45:12 UTC, WebFreak001 wrote:
> Xobj can then be used interchangeably with void*, so all void* 
> arguments accept Xobj and all Xobj arguments accept void*.

yes, i understand alias, and i dont want such behaviour


> If you want a type-safe alias that makes all void* arguments 
> accept Xobj but not Xobj arguments to accept void*

yes, this is that i search


> you can use `Typedef` like you linked.

Problem with Typedef template - code
   alias Xobj = Typedef!(void*)
not generate type named "Xobj",
but type named "Typedef!(void*, null, null)".
This makes compiler error messages unusable.


> enum Xobj : void*;
> ```
> This allows explicit conversion in both ways using cast, but 
> only allows implicit conversion from Xobj to void*, not from 
> void* to Xobj:

Strange syntax.
Behavour exactly what i want, but this code not works for me :(

   enum Xobj : void*;
   Xobj var;  //DMD Error: enum test7.Xobj forward reference of 
Xobj.init



More information about the Digitalmars-d-learn mailing list