Thread overview
Is DMC still being developed?
Sep 07, 2007
Sz. Horvát
Sep 07, 2007
Andy C
Sep 07, 2007
Sz. Horvát
September 07, 2007
Is the Digital Mars C++ compiler still being developed?  In spite of the  numerous problems/bugs, there has not been a new release for quite some time.

I used DMC while learning C++ about 4 years ago (I am not a programmer or a regular C++ user, so I need to re-learn it every time I use it ... that's the reason for the newbie-type questions ...), and I liked it very much.  At that time it was a very good compiler compared to the alternatives.  Bruce Eckel's book recommended it over the other compilers, as being more standards compliant.  It generated very fast numerical code, compared gcc.  It was a very small download, affordable for people with dial-up connections.

But now it seems to lag behind the other compilers, both in speed and standards compliance.  I can understand if Mr. Bright decided not to spend any more time on it, after all DMC is freeware.  But I'd really hate to see DMC abandoned.
September 07, 2007
It looks like it is, given that the 8.50 update was just posted! What is it you need to do that you can't?
September 07, 2007
Andy C wrote:
> It looks like it is, given that the 8.50 update was just posted!

Yes, you are right.  When I checked the main page a few days ago, only 8.49 was available.

> What is it you need to do that you can't?

There are lots of unfixed bugs.  Just browse this newsgroup.  Whenever I start experimenting with templates, I run into problems.  It is just sad that DMC used to be better than the alternatives, but now it is stagnating.

One example I posted back in April (it should compile):

    template<typename T> class arr { T x; };

    template<void (*D)(const arr<double>)> class ode { };

    void fun(const arr<double>) { }

    int main() {
        ode<fun> odeInst;
        return 0;
    }

Problems with the library:
 The -A option gives errors when including C++ standard library headers.
 std::sqrt() does not work with an argument of type double.

Another example I posted in 2004 (it should compile):

    template<class T> struct A { T t; };

    class B {
    private:
        struct C { int i; };
        static A<C> a;
    public:
        B() { a.t.i = 0; }
    };

    A<B::C> B::a;

Yet another example from 2004 (this one also prints some unreadable error messages---a common problem with DMC):

    class Class {
        template<unsigned U> struct Member { static void g() {} };
    public:
        void f() { Member<0>::g(); }
    };

    int main() {
        Class u;
        u.f();
    }

Szabolcs