Template Parameters in Struct Member Functions

Mike Parker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Aug 22 10:08:34 PDT 2015


On Saturday, 22 August 2015 at 16:49:26 UTC, DarthCthulhu wrote:
> 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);

test.arrayTest!(float, 1)(farray);



More information about the Digitalmars-d-learn mailing list