My template tuple code does not compile
H. S. Teoh
hsteoh at quickfur.ath.cx
Tue Feb 26 23:21:32 UTC 2019
On Tue, Feb 26, 2019 at 10:56:37PM +0000, Victor Porton via Digitalmars-d-learn wrote:
[...]
> After fixing the error you pointed me, it does not work too:
>
> mixin ProviderParams!("S", ((int, "x"), (float, "y")));
Try this:
mixin ProviderParams!("S", int, "x", float, "y");
> Also: Can I nevertheless group arguments?
Template argument lists auto-expand, so even if you could group
arguments, they make no functional difference. If you truly need to
distinguish between groups of arguments, you have to pack them into a
non-autoexpanding group, for example:
template Group(Args...) {
// Note: NOT eponymous.
alias contents = Args;
}
mixin ProviderParams!("S", Group!(int, "x"), Group!(float, "y"));
Keep in mind, however, that inside ProviderParams you will need to
explicitly access .contents. For example:
mixin template ProviderParams(Args...) {
static foreach (arg; Args[1 .. $]) {{
alias type = arg.contents[0];
alias name = arg.contents[1];
}}
}
T
--
Prosperity breeds contempt, and poverty breeds consent. -- Suck.com
More information about the Digitalmars-d-learn
mailing list