On Tuesday, 7 February 2017 at 09:17:04 UTC, Chris Katko wrote:
Can I pass a type, instead of a variable of a type, to a
template function in order to decide the datatype of T in a
function?
Yes. That's rather the point.
function1(f); //works
That is actually shorthand for this:
function1!float(f);
The compiler is inferring the type of f for you.
function2!float(); //?
function3!float(); //?
Yes, this is how it's done.
function3(float); //?
function3(double); //?
No. This won't compile.
It seems like this would be a useful construct for Factory
pattern that assembles any class that you specify as long as
the called methods work out. (ala Duck Typing, "if it walks()
and quacks() like a duck, it's a duck")
The range infrastructure is based on this concept.