What about an identifier that is an mixin

Daniel Kozák via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 13 13:42:31 PST 2017



Daniel Kozák <kozzi11 at gmail.com> napsal Pá, led 13, 2017 v 10∶32 :
> Daniel Kozák <kozzi11 at gmail.com> napsal Pá, led 13, 2017 v 10∶29 :
>> André Puel via Digitalmars-d <digitalmars-d at puremagic.com> napsal 
>> Pá, led 13, 2017 v 10∶15 :
>>> One thing that I miss sometimes when doing meta programming is 
>>> being able to hide that a function should be called with mixin.
>>> 
>>> For example (pardon my lack of creativity):
>>> 
>>>     // Instead of
>>>     string declare_a() {
>>>         return "int a;"
>>>     }
>>> 
>>>     int func() {
>>>         mixin(declare_a);
>>>         return a;
>>>     }
>>> 
>>>     // Could we have?
>>>     mixin declare_a() {
>>>         return "int a;";
>>>     }
>>> 
>>>     int func() {
>>>         declare_a;
>>>         return a;
>>>     }
>>> 
>>> I think this could be useful when one is creating Idiom and 
>>> Patterns, you could hide implementations details.
>> 
>> You can do this:
>> 
>> mixin template declare_a()
>> {
>>     int a;
>> }
>> 
>> int func()
>> {
>>     mixin declare_a;
>>     return a;
>> }
>> 
>> but there is no way to exclude mixin before calling declare_a, there 
>> is a good reason for that (it is really important to be able to tell 
>> when you use mixin and when not)
> 
> Right now you can even use
> template declare_a() {...}
> 
> there is no difference between template and mixin template

in this context, AFAIK you can not use mixin template like a normal 
template but you can use non mixin template like a mixin template
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20170113/80fbe5d1/attachment-0001.html>


More information about the Digitalmars-d mailing list