On Wednesday, 23 October 2024 at 12:32:09 UTC, Anton Pastukhov
wrote:
I'm struggling with this code. Why `countUntil` won't work with
aliases?
```d
import std.traits : EnumMembers;
import std.algorithm : countUntil;
enum Test: string
{
One = "one",
Two = "two",
Three = "three"
}
```
If it were me, I would equip my type with aliases like below. But
for some reason I don't understand, the enum Numbers works, while
the enum Test which is of type string doesn't!
```d
import std.traits : EnumMembers;
import std.algorithm : countUntil;
enum Test: string
{
One = "one",
Two = "two",
Three = "three"
}
enum Numbers: size_t
{
One = 1, Two, Three
}
struct MyStruct(T) {
enum tMax = T.max;
size_t idx;
}
alias myType = Numbers; // Test; // not works!
void main()
{
alias myAlias = MyStruct!myType;
auto rng = [EnumMembers!myType];
auto idx = rng.countUntil!(e => e == myAlias.tMax);
auto myStruct = myAlias(idx);
assert(myStruct.idx == 2);
}
```
SDB@79