return type and templates
Andrea Fontana
nospam at example.com
Fri Nov 22 03:50:33 PST 2013
On Friday, 22 November 2013 at 10:50:58 UTC, Andrea Fontana wrote:
> On Friday, 22 November 2013 at 10:34:12 UTC, Jonathan M Davis
> wrote:
>> On Friday, November 22, 2013 11:24:30 bearophile wrote:
>>> Jonathan M Davis:
>>> > It's not going to work for the compiler to figure out what
>>> > types might work with a given template constraint and then
>>> > have it pick one when you don't tell the template what
>>> > type to be instantiated with.
>>>
>>> It could work if the type system become more powerful, but
>>> what
>>> are the costs in compiler complexity, compilation times, and
>>> possible bugs in user code?
>>
>> What's it going to do? Try ever type that it knows about and
>> see which happens
>> to work? Try every type that it sees in the template
>> constraint (particularly
>> those in is expressions) and see if any of them work? It's a
>> feature which
>> sounds like you're trying to write AI. I don't think that even
>> makes sense to
>> attempt it. If there's really a type that makes sense by
>> default, then just
>> give a default template argument. Why try and make the
>> compiler more
>> complicated, particularly when it's questionable that it's a
>> solvable problem,
>> and it's pretty much a guarantee that it would have a high
>> efficiency cost even
>> if you could pull it off.
>>
>> - Jonathan M Davis
>
> I just mean:
>
> int t = s.value; // Means int t = s.value!int;
>
> If there's a problem with template instantiatio is the same we
> have now.
> Now I have to write:
>
> int t = s.value!int;
>
> so if there's a problem with !int, it's just like now.
>
> It's just a syntactic sugar, no new feature... Am I wrong?
Maybe it could be extended to function call if there's no
ambiguities.
something like;
void test(int a, long b);
test(s.value, t.value); => test(s.value!int, t.value!long);
just if test has no abiguities with overload or template params.
In this case we can throw an exception and template param must be
explicit.
More information about the Digitalmars-d-learn
mailing list