Create constraint for each parameter in template arg pack
Alex
sascha.orlov at gmail.com
Tue Aug 28 13:14:40 UTC 2018
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...
More information about the Digitalmars-d-learn
mailing list