how to resolve "matches more than one template declaration"?
Jonathan M Davis via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jun 20 14:14:57 PDT 2014
On Fri, 20 Jun 2014 20:40:49 +0000
Juanjo Alvarez via Digitalmars-d-learn <digitalmars-d-learn at puremagic.com>
wrote:
> Hi,
>
> Newbie question:
>
> void foo(S)(S oneparam){}
> void foo(S)(S oneparam, int anotherParam){}
> alias fooStr = foo!string;
>
> Gives:
>
> "Error: template test.foo matches more than one template
> declaration:"
>
> How could I fix it so the alias aliases one of the two versions?
> Also, why can't "fooStr" be an alias for both templates?
> Considering than the generic parameter is not what changes
> between both, I tough I could do fooStr(somestring) or
> fooStr(somestring, someint) with this alias.
void foo(S)(S oneparam) {}
is equivalent to
template foo(S)
{
void foo(S oneparam) {}
}
so do this:
template foo(S)
{
void foo(S oneparam){}
void foo(S oneparam, int anotherParam){}
}
alias fooStr = foo!string;
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list