```d
shared TT[] a;
T processArray(T)(ref T[] p){/*...*/} //function calls .reserve on its parameter
a.processArray;
```
Template *name* cannot deduce function from argument types !()(shared(T[]))...

Even if the function is changed to only accept shared parameters, .reserve does not appear to support shared so the function is impossible to use without somehow changing its type or using __gshared. Other than using pointers and casting(```processArray(*(cast(Unqual!TT*)&a))```, not ideal), is there a better way to transform an lvalue's type without it transforming into an rvalue?(direct casting seems to create an rvalue because compilation fails.)
Thanks

Reply via email to