Yes. At least as the compiler would say. It's a little odd but I believe that is how the D Nam mangling works. I personally just think of Foo!(Class) as the type. On Feb 17, 2012 8:05 AM, "kraybourne" <st...@kraybourne.com> wrote:
> On 2/17/12 1:51 PM, Kevin Cox wrote: > >> The error message is saying that you are trying to use Foo as a type but >> Foo is not a type, it is a template for a type. >> >> > Ah, so module.Foo is really not a class, but a template? I think I get it! > Thanks! > > (Is then module.Foo(int).Foo the actual class type? I think I've seen > errors like that pop up...) > > > On Feb 17, 2012 7:20 AM, "kraybourne" <st...@kraybourne.com >> <mailto:st...@kraybourne.com>> wrote: >> >> Hi! >> >> This doesn't work: >> >> import std.stdio; >> class Foo(T) >> { >> T t; >> this(T val) >> { >> t = val; >> } >> } >> >> void main() >> { >> auto o = new Foo(5); >> } >> _____ >> >> $ dmd foo >> foo.d(13): Error: class foo.Foo(T) is used as a type >> $ _ >> >> So I must >> >> auto o = new Foo!(int)(5); >> >> Then it compiles. Is it possible to have this() figure out the type >> some way? (In this particular example it's perhaps not such a big >> deal. But imagine a lot more args.) >> >> (Side note: What _does_ that error message mean? I don't get it.) >> >> thanks >> /krbrn >> >> >