Templates in classes => what is wrong?

Xan xancorreu at gmail.com
Tue Apr 17 11:03:30 PDT 2012


On Tuesday, 17 April 2012 at 18:00:55 UTC, Xan wrote:
> On Tuesday, 17 April 2012 at 15:59:25 UTC, Ali Çehreli wrote:
>> On 04/17/2012 08:42 AM, Xan wrote:
>>
>> > How to get the "code" of a function or delegate
>> >
>> > |___string toString() {
>> > |___|___return format("%s (versió %s): Domini -> Recorregut,
>> %s(x) =
>> > %s", nom, versio, nom, &funcio);
>> >
>> > |___}
>> >
>> > does not produce the desired result and &funcio without
>> ampersand
>> > produces me an error.
>> >
>> > So, my doubts are:
>> > given a function:
>> >
>> > - how can I get the domain
>> > - how can I get the range
>>
>> I did not understand those. :(
>
> Domain is the set of values that we pass to the function and 
> Range is the set of Values which are returned by function.
>
> V delegate (U) f;
> f has Domain U and Range V
>
> I want to "print" the type of "U" and "V".
>
> Something like:
>
> class Algorisme(U,V) {
> 	string nom;
> 	uint versio;
> 	alias V delegate (U) Funcio;
> 	Funcio funcio;
>
>
> 	this(string nom, uint versio, Funcio funcio) {
> 		this.nom = nom;
> 		this.versio = versio;
> 		this.funcio = funcio;
> 	}
>
> 	string toString() {
> 		return format("%s (versió %s): %s -> %s, %s(x) = %s", nom, 
> versio, V, U, nom, &funcio);
>
> 	}
> }
>
>
> but I receive
>
> algorisme.d:24: Error: type int has no value
> algorisme.d:24: Error: type int has no value


Solved with typeid:

string toString() {
|___|___return format("%s (versió %s): %s -> %s, %s(x) = %s", 
nom, versio, typeid(V), typeid(U), nom, &funcio);

|___}




More information about the Digitalmars-d-learn mailing list