On 2017-08-25 08:12, Nordlöw wrote:

Thanks!

Your advice led to the following sample solution

import std.meta : aliasSeqOf;
immutable englishIndefiniteArticles = [`a`, `an`];
bool isEnglishIndefiniteArticle(S)(S s)
{
     return cast(bool)s.among!(aliasSeqOf!englishIndefiniteArticles);
}

Is this the preferred way?

Since you're converting the returned index to a bool, can't you use "canFind" instead?

immutable englishIndefiniteArticles = [`a`, `an`];
bool isEnglishIndefiniteArticle(S)(S s)
{
    return englishIndefiniteArticles.canFind(s);
}

Could a template-parameter overload to `among` (perhaps calling it something slighty different) be defined that takes an immutable array as argument to prevent the conversion to the `AliasSeq` prior to the call?

I guess. Currently none of the existing overloads take an array, immutable or otherwise. They expect the values to be give as separate arguments.

--
/Jacob Carlborg

Reply via email to