On Tuesday, 29 March 2016 at 10:13:28 UTC, Puming wrote:
Hi,
I'm writing a generic class:
```d
struct Message { ... }
class Decoder(MsgSrc) {
}
```
When using it, I'd have to include the type of its argument:
```
void main() {
Message[] src = ...;
auto decoder = new Decoder!(Message[])(src);
...
}
```
Can it be inferred so that I only need to write?
```d
auto decoder = new Decoder(src); // you can infer the type from
src.
```
Nope. To see why, consider a class like this:
class A(T) {
T data;
this(int n) {
}
}
void main() {
auto a = new A(3); // What is T?
}
The common solution is a simple 'create' function:
Decoder!T decoder(T)(T msg) {
return new Decoder!T(msg);
}
--
Simen