Dollar identifiers in code-generating constructs

monkyyy crazymonkyyy at gmail.com
Thu Jul 4 14:42:18 UTC 2024


On Thursday, 4 July 2024 at 11:13:47 UTC, Quirin Schroll wrote:
> On Wednesday, 3 July 2024 at 13:34:11 UTC, monkyyy wrote:
>> On Wednesday, 3 July 2024 at 10:25:14 UTC, Quirin Schroll 
>> wrote:
>>> A dollar identifier is an 
>>> [*`Identifier`*](https://dlang.org/spec/lex.html#Identifier) 
>>> with a `$` at the end. In a code-generating construct 
>>> (mixed-in `mixin template` and `static foreach`/`static 
>>> foreach_reverse`) the `$` is replaced by a number.
>>>
>>> [...]
>>
>> is there a static foreach usecase where you cant use a index?
>>
>> ```d
>> template innate(T,alias discirmintor){
>>   T innate;
>> }
>> static foreach(i,A;...){
>>   alias L(int i_:i)=innate(F!A,i);
>> }
>> ```
>
> One can always use the index: `mixin("size_t l", cast(int)i, " 
> = ...")`. This is a lot of boilerplate for something 
> conceptually simple.

I think you can always *also* use template specialization and it 
should be faster to access then mixins and theres a handful of 
other benefits should as being able to pass them around as an 
overloadset


More information about the dip.ideas mailing list