digitalmars.D.learn - expand variadic template parameters
- =?UTF-8?B?IkFuZHLDqSI=?= (20/20) Mar 10 2015 Hi,
- ketmar (6/28) Mar 10 2015 sure. just remove `.expand`. ;-)
- Adam D. Ruppe (3/4) Mar 10 2015 The simplest: just write `bar(args);` - the variadic arguments
- =?UTF-8?B?IkFuZHLDqSI=?= (5/9) Mar 10 2015 too many trees in front of my eyes.
- Meta (7/28) Mar 10 2015 Just to be clear, TypeTuple is a library construct defined in
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é
Mar 10 2015
On Tue, 10 Mar 2015 19:11:21 +0000, Andr=C3=A9 wrote:Hi, =20 in this minified example I try to expand the variadic parmaters of foo to bar: =20 import std.typecons; =20 void foo(T ...)(T args) { bar(args.expand); } =20 void bar(int i, string s){} =20 void main() { foo(1, "a"); } =20 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); } =
Mar 10 2015
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.
Mar 10 2015
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.
Mar 10 2015
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.
Mar 10 2015