Thread overview
Passing null array to template
Jul 18, 2011
Jesse Phillips
Jul 18, 2011
David Nadlinger
Jul 18, 2011
Jonathan M Davis
Jul 19, 2011
Jesse Phillips
Jul 19, 2011
Jonathan M Davis
July 18, 2011
I'm wondering if this should be filed in Bugzilla. I'm guessing it should. The blow should compile?

void main() {
	example(null);
}

void example()(string[] foo) {
}

test.d(3): Error: template test.example() does not match any function template
declaration
test.d(3): Error: template test.example() cannot deduce template function from
argument types !()(void*)
July 18, 2011
On 7/18/11 7:43 PM, Jesse Phillips wrote:
> I'm wondering if this should be filed in Bugzilla. I'm guessing it should. The blow should compile?
>
> void main() {
> 	example(null);
> }
>
> void example()(string[] foo) {
> }
>
> test.d(3): Error: template test.example() does not match any function template
> declaration
> test.d(3): Error: template test.example() cannot deduce template function from
> argument types !()(void*)

If that doesn't compile, it is clearly a bug. Please do a quick search on Bugzilla and add this as a new issue if it is not already present.

Thanks,
David
July 18, 2011
On 2011-07-18 10:44, David Nadlinger wrote:
> On 7/18/11 7:43 PM, Jesse Phillips wrote:
> > I'm wondering if this should be filed in Bugzilla. I'm guessing it should. The blow should compile?
> > 
> > void main() {
> > 
> > example(null);
> > 
> > }
> > 
> > void example()(string[] foo) {
> > }
> > 
> > test.d(3): Error: template test.example() does not match any function
> > template declaration
> > test.d(3): Error: template test.example() cannot deduce template function
> > from argument types !()(void*)
> 
> If that doesn't compile, it is clearly a bug. Please do a quick search on Bugzilla and add this as a new issue if it is not already present.

It's always been that way, I believe, but I don't know if the issue is in bugzilla. Given that there's only one template overload that it could match, it should really match, but with multiple overloads, there _will_ be cases where you'd have to cast to the appropriate type even if this particular situation worked. It would be nice if it worked when there was no ambiguity though.

- Jonathan M Davis
July 19, 2011
On Mon, 18 Jul 2011 19:44:38 +0200, David Nadlinger wrote:

> On 7/18/11 7:43 PM, Jesse Phillips wrote:
>> I'm wondering if this should be filed in Bugzilla. I'm guessing it should. The blow should compile?
>>
>> void main() {
>> 	example(null);
>> }
>>
>> void example()(string[] foo) {
>> }
>>
>> test.d(3): Error: template test.example() does not match any function
>> template declaration
>> test.d(3): Error: template test.example() cannot deduce template
>> function from argument types !()(void*)
> 
> If that doesn't compile, it is clearly a bug. Please do a quick search on Bugzilla and add this as a new issue if it is not already present.
> 
> Thanks,
> David

http://d.puremagic.com/issues/show_bug.cgi?id=2394

Also, what does ITFI stand for? Implemented Template Function Interface?
July 19, 2011
On Tuesday 19 July 2011 01:19:11 Jesse Phillips wrote:
> On Mon, 18 Jul 2011 19:44:38 +0200, David Nadlinger wrote:
> > On 7/18/11 7:43 PM, Jesse Phillips wrote:
> >> I'm wondering if this should be filed in Bugzilla. I'm guessing it should. The blow should compile?
> >> 
> >> void main() {
> >> 
> >> 	example(null);
> >> 
> >> }
> >> 
> >> void example()(string[] foo) {
> >> }
> >> 
> >> test.d(3): Error: template test.example() does not match any function
> >> template declaration
> >> test.d(3): Error: template test.example() cannot deduce template
> >> function from argument types !()(void*)
> > 
> > If that doesn't compile, it is clearly a bug. Please do a quick search on Bugzilla and add this as a new issue if it is not already present.
> > 
> > Thanks,
> > David
> 
> http://d.puremagic.com/issues/show_bug.cgi?id=2394
> 
> Also, what does ITFI stand for? Implemented Template Function Interface?

I believe that it means Implicit Function Template Instantiation:

http://www.digitalmars.com/d/archives/digitalmars/D/IFTI_61299.html

While it exists in C++, it seems that the term is an invention of the D community.

- Jonathan M Davis