On Monday, 5 September 2016 at 09:59:16 UTC, Andrea Fontana wrote:
I asked this some time (years?) ago. Time for a second try :)

Consider this:

---

T simple(T)() { return T.init; }


void main()
{
        int test = simple!int(); // it compiles
        int test2 = simple();    // it doesn't
}

---

Is there any chance to implement this kind of deduction?
Please notice that it doesn't break any existing code, I guess.

For example using my json wrapper [1] this sounds a bit pedantic:

----
user.name = json.get!string("info/name");
user.age  = json.get!int("info/age");
----

If return type deduction could be implemented it would be:

----
user.name = json.get("info/name");
user.age  = json.get("info/age");
----

[1] https://code.dlang.org/packages/jsonwrap

Andrea

I see just one problem in this request:

===========================
T get(T = int)()
{
    return T.init;
}

double val = get(); // should this call get!double or try to call get!int and give an error?
===========================

That is, what takes precedence? Default argument or inference from the destination type? I'd personally prefer this to give an error, as it is ambiguous and error prone.

Reply via email to