Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
March 10, 2015 expand variadic template parameters | ||||
---|---|---|---|---|
| ||||
Hi, in this minified example I try to expand the variadic parmaters of foo to bar: import std.typecons; void foo(T ...)(T args) { bar(args.expand); } void bar(int i, string s){} void main() { foo(1, "a"); } I got the syntax error: no property 'expand' for type '(int, string)' I understand args is a TypeTuple and therefore expand is not working. Is there a simple way to get it working? Kind regards André |
March 10, 2015 Re: expand variadic template parameters | ||||
---|---|---|---|---|
| ||||
Posted in reply to André Attachments: | On Tue, 10 Mar 2015 19:11:21 +0000, André wrote:
> Hi,
>
> in this minified example I try to expand the variadic parmaters of foo to bar:
>
> import std.typecons;
>
> void foo(T ...)(T args)
> {
> bar(args.expand);
> }
>
> void bar(int i, string s){}
>
> void main()
> {
> foo(1, "a");
> }
>
> I got the syntax error: no property 'expand' for type '(int, string)' I understand args is a TypeTuple and therefore expand is not working. Is there a simple way to get it working?
sure. just remove `.expand`. ;-)
void foo(T...) (T args) {
bar(args);
}
|
March 10, 2015 Re: expand variadic template parameters | ||||
---|---|---|---|---|
| ||||
Posted in reply to André | On Tuesday, 10 March 2015 at 19:11:22 UTC, André wrote:
> Is there a simple way to get it working?
The simplest: just write `bar(args);` - the variadic arguments will automatically expand.
|
March 10, 2015 Re: expand variadic template parameters | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | too many trees in front of my eyes.
Thanks for the answers.
Kind regards
André
On Tuesday, 10 March 2015 at 19:16:23 UTC, Adam D. Ruppe wrote:
> On Tuesday, 10 March 2015 at 19:11:22 UTC, André wrote:
>> Is there a simple way to get it working?
>
> The simplest: just write `bar(args);` - the variadic arguments will automatically expand.
|
March 10, 2015 Re: expand variadic template parameters | ||||
---|---|---|---|---|
| ||||
Posted in reply to André | On Tuesday, 10 March 2015 at 19:11:22 UTC, André wrote:
> Hi,
>
> in this minified example I try to expand the variadic parmaters of
> foo to bar:
>
> import std.typecons;
>
> void foo(T ...)(T args)
> {
> bar(args.expand);
> }
>
> void bar(int i, string s){}
>
> void main()
> {
> foo(1, "a");
> }
>
> I got the syntax error: no property 'expand' for type '(int,
> string)'
> I understand args is a TypeTuple and therefore expand is not
> working.
> Is there a simple way to get it working?
>
> Kind regards
> André
Just to be clear, TypeTuple is a library construct defined in std.typetuple. It doesn't have a .expand member as far as I know. You're probably thinking of tuple.expand.
The type of `T ...` is not TypeTuple, but an internal tuple type used by the compiler. TypeTuple is just some syntactic sugar allowing you to create one of these compiler tuples.
|
Copyright © 1999-2021 by the D Language Foundation