How to declare a template type as parameter to functions

Domingo via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Nov 3 15:43:42 PST 2014


Hello !

I could not find a clear way that show how to use template types 
as parameter to functions:

There is a general rule to do it ? On several examples when the 
return type comes from a template I saw the usage of "auto" where 
the compiler will deduce the correct type but when we need to 
pass that value as a parameter to a function how we declare then 
as parameter ?


//void dummFunction(type<Bson,Bson,Bson> "appender", 
type<forFromAuto> "another templated type")

void dummFunction(typeforFromAuto "appender", typeforFromAuto 
"another templated type")
{
}

auto as = appender!string();
auto an = appender!double();
auto an = appender!customType();
auto bd = collection.find().limit(2);

struct MongoCursor(Q = Bson, R = Bson, S = Bson);

auto bd2 = collection.find(Bson(["key": Bson(3)])).limit(2);
auto bd3 = collection.find(Bson(["key": Bson(3)]), ["fld":1, 
"data":1]).limit(2);

The above example is dummy example only imagine that you need to 
write a function accepting one of the several templated types 
returned on several parts of phobos and third party libraries 
like vibed.

Can someone give a general rule for this kind of problem ?


More information about the Digitalmars-d-learn mailing list