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


Reply via email to