Template Parameters in Struct Member Functions
DarthCthulhu via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Aug 22 09:49:25 PDT 2015
I'm having difficulty understanding how templates operate as
function parameters.
Say I have this:
struct ArrayTest {
void arrayTest(T) (T arrayT) {
writeln(arrayT);
}
}
unittest {
ArrayTest test;
float farray[] = [
0.5f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
-0.5f, 0.5f, 0.0f
];
test.arrayTest(farray);
}
Everything works peachy as expected. But as soon as I add another
parameter to the arrayTest function like so (and changing the
unit test to match):
void arrayTest(T, int passing) (T arrayT) { ... }
I get 'cannot deduce function from argument types' errors.
Specifically stating the type of the function doesn't seem to
help:
test.arrayTest(float [])(farray, 1);
There must be a way to mix template and non-template parameters,
right? What am I missing here?
In addition, as I understand it, one can restrict the type of
parameter a template can use. So if I only wanted arrays as the
function name indicates, I should be able to do this:
void arrayTest(T : T[]) (T arrayT) { ... }
But that also doesn't seem to work.
More information about the Digitalmars-d-learn
mailing list