On Tuesday, 28 August 2018 at 13:05:15 UTC, bauss wrote:
On Tuesday, 28 August 2018 at 12:28:19 UTC, Andrey wrote:
Hello,
Let we have two variadic templates:
template Qwerty(Values...) {}
template Qaz(alias type, Data...) {}

Now I want to add a constraint to "Qwerty" so that each type in "Values" pack must be a "Qaz" template. I don't care about values of "type" or "Data" in "Qaz".
How to do it in D?

I'm not sure if there is a better way, but isInstanceOf (std.traits) seems to work with a static foreach and a static if.

template Qwerty(Values...)
{
    static foreach (value; Values)
    {
        static if (!isInstanceOf!(Qaz, value))
        {
            static assert(0, "Values are not Qaz only ...");
        }
    }

    // ...
}

https://dlang.org/phobos/std_traits.html#TemplateOf

maybe...

Reply via email to