On 9/3/12 9:15 PM, Timon Gehr wrote:
This would eventually lead to a solution like
bool among(S,T...)(S needle, auto enum T haystack){
...
foreach(h;haystack) static if(__traits(isConstant, h)){ ... }
...
}
Which is still rather specific.
Anyway, I don't consider among trying to be clever crucial at all.
I'd be happy with:
uint among(S, T...)(S needle, T haystack)
{
foreach (i, straw; haystack)
{
if (needle == straw) return i + 1;
}
return 0;
}
The only issue is that all straws in the haystack are evaluated eagerly,
even if not needed. I think it's okay to live with that.
Andrei