Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
May 21, 2017 Multiple template variadic list not working | ||||
---|---|---|---|---|
| ||||
I've been trying to translate the following idea expressed here in c++: template <auto... UserArgs, class... Arguments> void func(Arguments... args) {} so I tried void func(UserArgs..., Arguments...)(Arguments args) {} and then void func(Args...)(Filter!(isType, Args) args) {} but nothing works. This seems like something simple to handle, why is it not then ? |
May 21, 2017 Re: Multiple template variadic list not working | ||||
---|---|---|---|---|
| ||||
Posted in reply to bastien penavayre | On Sunday, 21 May 2017 at 15:13:55 UTC, bastien penavayre wrote:
> I've been trying to translate the following idea expressed here in c++:
>
> template <auto... UserArgs, class... Arguments>
> void func(Arguments... args) {}
>
> so I tried
>
> void func(UserArgs..., Arguments...)(Arguments args) {}
>
> and then
>
> void func(Args...)(Filter!(isType, Args) args) {}
>
> but nothing works.
> This seems like something simple to handle, why is it not then ?
How would that work ?
How would I know where UserArgs end, and Arguments begin ?
|
May 21, 2017 Re: Multiple template variadic list not working | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stefan Koch | On Sunday, 21 May 2017 at 15:16:55 UTC, Stefan Koch wrote:
> How would that work ?
> How would I know where UserArgs end, and Arguments begin ?
func!(UserArgs here)(Arguments values here);
C++ does it without any problem.
I don't see what prevent D from doing it.
|
May 21, 2017 Re: Multiple template variadic list not working | ||||
---|---|---|---|---|
| ||||
Posted in reply to bastien penavayre | On Sunday, 21 May 2017 at 15:13:55 UTC, bastien penavayre wrote:
> I've been trying to translate the following idea expressed here in c++:
>
> template <auto... UserArgs, class... Arguments>
> void func(Arguments... args) {}
>
> so I tried
>
> void func(UserArgs..., Arguments...)(Arguments args) {}
>
> and then
>
> void func(Args...)(Filter!(isType, Args) args) {}
>
> but nothing works.
> This seems like something simple to handle, why is it not then ?
In this case, eponymous template should do the trick:
template func(UserArgs...) {
void func(Arguments...)(Arguments args) {}
}
|
May 21, 2017 Re: Multiple template variadic list not working | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stanislav Blinov | On Sunday, 21 May 2017 at 15:30:38 UTC, Stanislav Blinov wrote:
>
> In this case, eponymous template should do the trick:
>
> template func(UserArgs...) {
> void func(Arguments...)(Arguments args) {}
> }
Ah I see, I didn't know of this technique.
Thanks.
|
Copyright © 1999-2021 by the D Language Foundation