From: Nikolay Ivchenkov on 11 Aug 2010 15:52 > ----------------------------------alignment------------------------------------ On 9 Aug, 01:48, Walter Bright <newshou...(a)digitalmars.com> wrote: > Digital Mars C++ is very fast at compiling, far faster > than any other C++ compiler. I have tested free Digital Mars C/C++ Compiler v. 8.52 from http://www.digitalmars.com/download/freecompiler.html The results were impressive, so I decided to show here how well this fastest compiler works. 1) namespace { struct X {}; } int main() { ::X x; // well-formed } Compiler message: Error: undefined identifier 'X', did you mean 'X'? 2) struct X { void f(X) {} }; int main() { f(X()); // ill-formed } No diagnostics issued (the compiler silently calls X::f). 3) struct X { typedef X *type; friend void f(type) { type t; // well-formed } }; int main() {} Compiler message: Error: '(' expected following simple type name 4) int main() { int arr[10] = {}; // well-formed } Compiler message: Error: expression expected 5) struct X {}; int main() { X f(X()); // f shall be a function, not a variable int size = sizeof f(0); // well-formed } Compiler message: Error: no match for function 'operator()(int )' 6) template <class T> struct X { template <class U> void f(); }; template <class T> template <class U> void X<T>::f() {} // well-formed int main() { X<void>().f<int>(); // well-formed } Compiler message: Error: template-argument 'U' has no value in template function specialization 7) #include <stdio.h> struct A { typedef A type; A() { printf("A()\n"); } }; template <class T> struct X { void f() { typename T::type(); // well-formed } }; int main() { X<A>().f(); } Compiler message: Error: identifier or '( declarator )' expected 8) template <class T, void (T::*)(T &)> struct X {}; template <class T> void f(X<T, &T::swap>) {} // well-formed int main() {} Compiler message: Error: can't take address of register, bit field, constant or string Internal error: func 564 9) #include <stdio.h> template <class T> struct identity {}; typedef char b0[1]; typedef char b1[2]; template <class U> b0 &test(...); template <class U> b1 &test(identity<typename U::type> *); template <class T> struct has_type { enum { value = sizeof test<T>(0) == sizeof(b1) }; }; int main() { printf("%d\n", has_type<int>::value); } Compiler message: Internal error: template 1932 10) template <class T> void f(T &) {} void g() {} int main() { f(g); // well-formed } Compiler message: Error: reference must refer to same type or be const Had: void (*C func)() and: void (*C func)()& 11) void f(int &) {} void f(int const &) {} int main() { f(0); // well-formed: shall call the second f } Compiler message: Error: reference must refer to same type or be const Had: int and: int & 12) void f(int const *) {} void f(int *const &) {} int main() { int *p = 0; f(p); // well-formed: shall call the second f } Compiler message: Error: ambiguous reference to symbol Had: f(int const *) and: f(int *const &) 13) struct X { X() {} private: X(X const &); }; int main() { X x = X(); // ill-formed (even if the copy would be elided) // this error is required to be diagnosed } No diagnostics issued. 14) #include <stdio.h> struct B {}; struct D : B { D() { printf("D()\n"); } ~D() { printf("~D()\n"); } }; int main() { B const &ref = D(); printf("ref scope\n"); } Program output: D() ~D() ref scope Required program output: D() ref scope ~D() 15) #include <stdio.h> #include <typeinfo> struct B { virtual ~B() {} }; int main() { B *b = 0; try { printf("%s\n", typeid(*b).name()); // see [expr.typeid]/2 } catch (std::bad_typeid &) { printf("bad typeid\n"); } } Program output: none (crash) Required program output: bad typeid -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ]
From: Alf P. Steinbach /Usenet on 12 Aug 2010 08:20 * Nikolay Ivchenkov, on 12.08.2010 08:52: >> ----------------------------------alignment------------------------------------ > > On 9 Aug, 01:48, Walter Bright<newshou...(a)digitalmars.com> wrote: >> Digital Mars C++ is very fast at compiling, far faster >> than any other C++ compiler. > > I have tested free Digital Mars C/C++ Compiler v. 8.52 from > http://www.digitalmars.com/download/freecompiler.html > > The results were impressive, so I decided to show here how well this > fastest compiler works. Yes, it really is fast, Walter knows his stuff. I vaguely recall that he was the one behind the Zortech C++ compiler? So, if you have the time, try D. :-) Anyways, unless you used a direct link to the download you would have clicked your way through a page that says The Software is not generally available software. It has not undergone testing and may contain errors. The Software was not designed to operate after December 31, 1999. It's only now, as of ten years after that, that major compiler vendors have finally caught up with most of the 1998 Holy Standard. You could as well have tried out Borland C++ 5.0 (Borland also fast!). It's a good idea to read what one clicks through (my mother has this problem of not actually reading, and gets into all kinds of computer problems, "Help!"...). Cheers & hth., - Alf ;-) -- blog at <url: http://alfps.wordpress.com> [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ]
From: Nikolay Ivchenkov on 12 Aug 2010 15:08 On 13 Aug, 03:20, "Alf P. Steinbach /Usenet" <alf.p.steinbach +use...(a)gmail.com> wrote: > * Nikolay Ivchenkov, on 12.08.2010 08:52: > > > The results were impressive, so I decided to show here how well this > > fastest compiler works. > > Yes, it really is fast But fighting with compiler bugs is probably not. > So, if you have the time, try D. :-) This programming language is not interesting for me. > Anyways, unless you used a direct link to the download you would have clicked > your way through a page that says > > The Software is not generally available software. It has not undergone > testing and may contain errors. The Software was not designed to operate > after December 31, 1999. > > It's only now, as of ten years after that, that major compiler vendors have > finally caught up with most of the 1998 Holy Standard. I don't see any reasons to provide a link to this free compiler other than for testing. Why should a potential user buy the general product if the trial version is so bad? Is the general compiler much better? -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ]
From: Walter Bright on 12 Aug 2010 23:21 Nikolay Ivchenkov wrote: > Why should a potential user buy the general product > if the trial version is so bad? Is the general compiler much better? It's the same compiler. The general product includes things like the IDE, debugger, library source, etc. -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ]
From: Walter Bright on 12 Aug 2010 23:20
Nikolay Ivchenkov wrote: > I have tested free Digital Mars C/C++ Compiler v. 8.52 from > http://www.digitalmars.com/download/freecompiler.html Thanks for the bug reports. I have taken the liberty of putting them into the C++ bugzilla: http://bugzilla.digitalmars.com/issues/show_bug.cgi?id=65 [...] http://bugzilla.digitalmars.com/issues/show_bug.cgi?id=78 May I ask what test suite you were using? -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] |