IFTI in Eponymous Templates

jmh530 via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 29 11:59:19 PDT 2016


I was playing around with some Eponymous Templates. I had been 
under the impression that Implicit Function-Template 
Instantiation (IFTI) meant that you don't have to explicitly 
instantiate all functions. However, it seems like there are cases 
with eponymous templates with functions in them that you do. For 
instance, in the bar function below, I have to explicitly 
instantiate the inner function template.


template foo(T, U)
{
	T foo(T x, U y)
	{
		return x + cast(T)y;
	}
}

template bar(T)
{
	T bar(U)(T x, U y)
	{
		return x + cast(T)y;
	}
}

void main()
{
	int a = 1;
	long b = 2;
	auto x = foo(a, a);
	//auto y = bar(a, b); //error
	auto y = bar!(long)(a, b);
}


More information about the Digitalmars-d-learn mailing list