---------------
Christof Meerwald@freec++.prog

home
> prog
>> freecpp

translate to German (by SYSTRAN)

I have recently started evaluating two freely available C++ compilers for the Win32 platform: Digital Mars C++ and Watcom C++. Both compilers were only recently revived after a few years of no development and they therefore still lack a bit behind with the latest C++ language features.

Here are some quick&dirty C++ language conformance tests comparing these compilers (using the default settings).

C++ Language Feature / Test Case Digital Mars C++ 8.45 Open Watcom C++ 1.6 Microsoft Visual C++ 7.1 Microsoft Visual C++ 2005 Turbo C++ Explorer MinGW C/C++ 3.2.3
digraph punctuation tokens PASS FAIL FAIL FAIL PASS PASS
alternative tokens PASS PASS FAIL FAIL FAIL PASS
new style casts PASS PASS PASS PASS PASS PASS
bool type PASS PASS PASS PASS PASS PASS
bool conditions PASS PASS PASS PASS PASS PASS
mutable keyword PASS PASS PASS PASS PASS PASS
explicit keyword PASS PASS PASS PASS PASS PASS
typename keyword PASS FAIL PASS PASS PASS PASS
covariant return types PASS PASS PASS PASS PASS PASS
arrow operator return type PASS PASS PASS PASS FAIL PASS
overloading enums PASS PASS PASS PASS FAIL PASS
nested class forward declaration PASS FAIL PASS PASS PASS PASS
friend declaration of class in another namespace PASS PASS PASS PASS PASS PASS
class name injection PASS PASS PASS PASS FAIL PASS
friend name injection FAIL FAIL PASS PASS FAIL FAIL
static const integral members PASS PASS PASS PASS PASS PASS
delete const object PASS PASS PASS PASS PASS PASS
returning void PASS PASS FAIL FAIL PASS PASS
new scoping rules PASS PASS PASS PASS PASS PASS
if statement condition PASS PASS PASS PASS PASS PASS
switch statement condition PASS PASS FAIL PASS PASS PASS
while statement condition PASS FAIL PASS PASS FAIL PASS
for statement condition PASS FAIL FAIL FAIL PASS PASS
default argument scope FAIL FAIL PASS PASS FAIL PASS
namespaced enum PASS PASS PASS PASS PASS PASS
namespaced template PASS PASS PASS PASS PASS PASS
namespaced template function PASS PASS PASS PASS PASS PASS
using namespaced template PASS PASS PASS PASS PASS PASS
non-type template parameter PASS PASS PASS PASS PASS PASS
explicit template instantiation PASS PASS PASS PASS PASS PASS
default template parameters PASS PASS PASS PASS PASS PASS
template with default dependent parameter PASS PASS PASS PASS PASS PASS
template template arguments PASS FAIL PASS PASS PASS PASS
explicit qualification of template function PASS FAIL PASS PASS PASS PASS
new template specialization syntax PASS PASS PASS PASS PASS PASS
partial template specialization PASS PASS PASS PASS PASS PASS
partial ordering of class template partial specializations PASS PASS PASS PASS PASS PASS
member template class PASS FAIL PASS PASS PASS PASS
member template function PASS FAIL PASS PASS PASS PASS
new throws std::bad_alloc FAIL FAIL PASS PASS PASS PASS
typeid throws std::bad_typeid FAIL PASS PASS PASS PASS PASS
throwing destructor PASS FAIL PASS PASS PASS FAIL
Koenig lookup PASS FAIL PASS PASS PASS PASS
two phase name lookup PASS FAIL FAIL FAIL FAIL PASS
Quality of Implementation Issues
empty base class optimization PASS PASS PASS PASS FAIL PASS
return value optimization PASS PASS FAIL PASS FAIL PASS
C++0x Extensions
static assertions FAIL PASS FAIL FAIL FAIL FAIL
right angle brackets FAIL PASS FAIL PASS FAIL FAIL
C99 Extensions (C++ Compiler)
predefined __func__ identifier PASS PASS FAIL FAIL FAIL PASS
hexadecimal floating-point literals PASS FAIL FAIL FAIL PASS PASS
long long type PASS PASS PASS PASS PASS PASS
restrict keyword FAIL FAIL FAIL FAIL FAIL FAIL
variable length array PASS FAIL FAIL FAIL FAIL PASS
dynamic sizeof evaluation PASS FAIL FAIL FAIL FAIL PASS
empty macro arguments PASS PASS PASS PASS PASS PASS
enum declaration with trailing comma PASS PASS PASS PASS PASS PASS
flexible array member PASS PASS PASS PASS PASS PASS
compound literals FAIL FAIL FAIL FAIL FAIL PASS

There is also a page describing how to use Microsoft's latest (Platform) SDK and STLport-4.5 with Digital Mars C++.

---------------

This Web page is licensed under the Creative Commons Attribution - NonCommercial - Share Alike License. Any use is subject to the Privacy Policy.

Revision: 1.58, cmeerw.org/prog/freecpp/
Last modified: Mon Sep 03 18:20:50 2018
Christof Meerwald <cmeerw@cmeerw.org>
XMPP: cmeerw@cmeerw.org