static foreach not working with this

Michelle Long HappyDance321 at gmail.com
Mon Jan 7 16:44:03 UTC 2019


On Monday, 7 January 2019 at 16:29:25 UTC, Alex wrote:
> On Monday, 7 January 2019 at 16:16:57 UTC, Michelle Long wrote:
>> On Monday, 7 January 2019 at 16:01:50 UTC, Michelle Long wrote:
>>> static foreach(k, p; AliasSeq!(this, s))		
>>> {{
>>>     p.foo(); // Fails even if this line is removed
>>> }}
>>>
>>> this not known at compile time. replace s with this and it 
>>> works! s is an argument which is also not known at compile 
>>> time(generally).
>>>
>>> Should work with this.
>>>
>>> Just "simplifying"
>>>
>>> this.foo();
>>> s.foo();
>>>
>>>
>>> (obviously more complex code)
>>
>> static foreach(k, p; AliasSeq!(Alias!this, s))		
>> {{
>>     p.foo(); // Fails even if this line is removed
>> }}
>
> referring to
> https://forum.dlang.org/post/aqypsijjvajybtqtmnwt@forum.dlang.org
>
> Do you trying to do a recursive call from foo to itself?

foo has nothing to do with it, as I said, removing it produces 
the same error['p.foo(); // Fails even if this line is removed']. 
I only put in something in the block because some blockhead would 
say something if there was nothing there like "Why are you even 
bothering with a static for each on an empty block? are you that 
stupid that you don't realize the compiler won't emit any code?".




More information about the Digitalmars-d-learn mailing list