qualified type names for mixins

Jonathan Marler via Digitalmars-d digitalmars-d at puremagic.com
Thu Jun 15 14:26:38 PDT 2017


On Thursday, 15 June 2017 at 20:34:39 UTC, Adam D. Ruppe wrote:
> On Thursday, 15 June 2017 at 19:15:55 UTC, Jonathan Marler 
> wrote:
>> I've found that the fullyQualifiedName template in std.traits 
>> is a good tool for creating mixin code, however, it doesn't 
>> always work.
>
> Why is it useful? I suggest you are probably doing it wrong.
>
> https://stackoverflow.com/questions/32615733/struct-composition-with-mixin-and-templates/32621854#32621854
>
> always use local names in string mixins. Don't try to build 
> strings with other names, just use the one you already have in 
> scope.

This example is contrived to demonstrate the usage, obviously you 
would never need to use fullyQualifiedName!T if you can just use 
the type name directly.

The common use case is when you'd like to mixin a type when it is 
passed to a template.  For example, I recently made an addition 
to the bitfields function that adds support for other bool-like 
types like std.traits.Flag.  The bitfields template takes the 
type as an alias parameter and then mixin's in the name of the 
type, however, there's no general way to mixin the type from an 
alias.  It uses T.stringof in some cases, and I had to do some 
hacky template stuff to make std.traits.Flag work.  
fullyQualifiedName also doesn't work because of the issues 
explained here.


More information about the Digitalmars-d mailing list