Let this() figure out T implicitly?

kraybourne stdin at kraybourne.com
Fri Feb 17 05:04:27 PST 2012


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" <stdin at kraybourne.com
> <mailto:stdin at 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
>



More information about the Digitalmars-d-learn mailing list