Lexicographical object comparison by selected members of a struct
Tejas
notrealemail at gmail.com
Sat Aug 21 08:31:46 UTC 2021
On Saturday, 21 August 2021 at 06:58:47 UTC, Ali Çehreli wrote:
> On 8/20/21 11:19 PM, Tejas wrote:
>> [...]
>
> Yes. 'static foreach' does not introduce scope, which can be
> pretty useful. For example, one can define functions at module
> scope.
>
> The subtle differences between 'static foreach' and
> '(compile-time) foreach' can be surprising. For example, I
> don't understand why I can't use
>
> foreach (i; 0 .. members.length) {
> enum ident = __traits(identifier, members[i]);
> // ...
> }
>
> Error: variable `i` cannot be read at compile time.
>
> I think it should be. :) members.length is compile-time; so,
> 'i' should be compile time.
>
> And then, why can't 'static foreach' iterate over 'members'?
>
> static foreach (member; members) {{
> // ...
> }}
>
> Error: value of `this` is not known at compile time
>
> Hm? Well, I am happy that there is always a path through. :)
>
> Ali
Maybe it has something to do with that compile-time vs
compile-time thing by quickfur on the dlang wiki.
I was more impressed that you found that hack in the first place
More information about the Digitalmars-d-learn
mailing list