On Sunday, 12 July 2015 at 09:13:03 UTC, Yuxuan Shui wrote:
For example:
import std.conv;
T a(T)(int a) {
        return to!T(a);
}
void main(){
        string x = a(2);
}

D is not able to deduce T. Can we make it possible to deduce template arguments from where the return value is assigned to?

Rust is able to do this:
fn main() {
        let a : Vec<i32> = Vec::new();
}

(In fact, you can even do this is Rust:
fn main() {
        let mut a = Vec::new();
        a[0] = 0i32;
})

Just like ML, Rust's amazing type inference comes with a price - a super strict type system. D has less strict type system, which allows - for example - implicit conversions in some cases(consider http://dpaste.dzfl.pl/ed83a75a48ba)

For D to support Rust's kind of type inference, it's type system will need to be completely replaced with something much more strict. Whether you think such type systems are good or not - this change will result in a massive code breakage.

Reply via email to