December 14, 2010 overloading between templates and non-templates | ||||
---|---|---|---|---|
| ||||
In D2 : 1/ Is it valid to have two functions with the same name, one templated and another not ? I remember a NG thread but cannot find it. void A(int x) { // blah } void A(T)(T x) { // blah } 2/ If (1)'s answer is yes, is it equivalent to a template specialization? void A(int x) { // blah } void A(T)(T x) { // blah } A(x); // first function called 3/ If (2)'s answer is no, how is overloading resolved with : void A(int x) { // blah } void A(T)(T x) if (is(T== int)) { // blah } A(x); // which function called ? Many thanks. |
December 14, 2010 Re: overloading between templates and non-templates | ||||
---|---|---|---|---|
| ||||
Posted in reply to #ponce | On Tue, 14 Dec 2010 13:17:11 -0500, #ponce <cont4ct@gamesfr0mmar5.fr> wrote: > In D2 : > > > 1/ Is it valid to have two functions with the same name, one templated and another not ? I remember a NG thread but cannot find it. Yes, but it's not properly implemented. The ability is specified in TDPL. There is a bug somewhere I think. > 2/ If (1)'s answer is yes, is it equivalent to a template specialization? I would have to guess yes (the opposite makes no sense), but I'm unsure of the full semantics (don't have a copy of TDPL). What's unclear to me is if the argument implicitly converts what is chosen. -Steve |
Copyright © 1999-2021 by the D Language Foundation