Specialization Not Allowed for Deduced Parameter

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Aug 22 21:41:43 PDT 2014


On 08/22/2014 07:47 PM, Yota wrote:

 > So what's up with the syntax I tried before?  Has it been
 > deprecated?

I don't know the details. I am curious as well.

I think it is related to value template parameters. The first example 
below fails but the second one works. The only difference is that the 
one that fails uses a string value parameter like your original code did.

// This program FAILS
struct A(string S)
{}

void foo(T : A!S, string S)(T t)  // <- string value
{}

void main()
{
     auto a = A!"hello"();
     foo(a);
}

// This program WORKS
struct A(S)
{}

void foo(T : A!S, S : int)(T t)  // <- int parameter
{}

void main()
{
     auto a = A!int();
     foo(a);
}

So, I don't know whether it should work but at least the previous 
programs show that it is indeed possible to specialize using a "deduced 
parameter" (i.e. S being 'int' in the program that works).

Ali



More information about the Digitalmars-d-learn mailing list