[comp.std.c++] ANSI C++

harold@fmrco (Harold Naparst) (05/10/91)

What is the status of ANSI C++ ?  Is is a standard, or just
a proposed standard ?


What is the basis of ANSI C++ ?  Is it the same as AT+T 2.1,
or is it not compatible with it ?

How compatible is G++ with the ANSI C++ standard ?

-- 
Harold Naparst               |  (uunet!fmrco!harold) 
Fidelity Investments         |  (617)-570-2587
82 Devonshire St., #I40B     |  The opinions expressed herein are not those
Boston, MA  02109            |  of my employer.

jbuck@janus.Berkeley.EDU (Joe Buck) (05/11/91)

In article <1991May9.210846.10508@fmrco> harold@fmrco (Harold Naparst) writes:
>What is the status of ANSI C++ ?  Is is a standard, or just
>a proposed standard ?

Neither.  At this point, there is a group that is working to produce
a standard, and there is a base document, Ellis and Stroustrup's
"The Annotated C++ Reference Manual" (which you will see referred to
on the net as "the ARM" or "E&S").  The ANSI C standard is also a
base document.

>What is the basis of ANSI C++ ?  Is it the same as AT+T 2.1,
>or is it not compatible with it ?

As I said above, the basis they're working from is the ARM, which is
very close to, but not identical with, AT&T version 2.1.

>How compatible is G++ with the ANSI C++ standard ?

It attempts to be close, but there are a number of small differences.
Mike Tiemann, author of g++, has promised that future versions of g++
will "track the ANSI standard", and he's a voting member of the ANSI
standards committee.

Here are some differences (as of g++ 1.39):

1) The "delete [] pointerToArrayofObjects" syntax isn't supported.
2) The syntax for overloading operator new and specifying a placement
for the new memory is different.
3) The parser sometimes has trouble with function pointer arguments,
you can get around these by using a typedef for the "pointer to
function" or "pointer to member function" type.
4) "class Derived : protected Base" isn't supported (it isn't supported
in AT&T 2.0 either, don't know about 2.1)
5) The supplied stream classes are roughly compatible with the AT&T
1.2 stream classes, not the 2.0 ones.  The standards committee will
probably specify something like the 2.0 behavior, but this isn't
finalized yet.
6) Compiler bugs, mainly in the area of multiple inheritance.

g++ provides a number of extensions as well.
-- 
--
Joe Buck
jbuck@janus.berkeley.edu	 {uunet,ucbvax}!janus.berkeley.edu!jbuck	

wmm@world.std.com (William M Miller) (05/12/91)

harold@fmrco (Harold Naparst) writes:
> What is the status of ANSI C++ ?  Is is a standard, or just
> a proposed standard ?

Neither, yet.  A committee, X3J16, was formed in December of 1989 and is
meeting three times a year, with lots of informal activity outside the
regular meetings.  In addition, an ISO working group for C++, WG21, has been
authorized; their organizational meeting will be held in conjunction with
the next X3J16 meeting next month in Lund, Sweden.  The best guess for
public review of a draft proposed standard is probably late 1993 or early
1994.

> What is the basis of ANSI C++ ?  Is it the same as AT+T 2.1,
> or is it not compatible with it ?

The base documents adopted by X3J16 are the AT&T 2.1 reference manual (note
that several features described in that manual were not actually implemented
by release 2.1 of cfront; release 3.0 of cfront will conform much more
closely to the 2.1 specification) and X3.159-1989, the ANSI C Standard.  In
July, 1990, the committee adopted wholesale all the changes (there weren't
many) from the base document reflected in the first printing of _The
Annotated C++ Reference Manual_, by Margaret Ellis and Bjarne Stroustrup
(Addison/Wesley), which explains the technically-inaccurate but
functionally-correct logo "ANSI Base Document" emblazoned on the cover of
the book.  Since then, there have been two major additions to the language
(templates and exceptions, both in virtually identical form to the
description in the commentary sections of E&S) and a number of minor
corrections, nearly all of which are reflected in the third printing of E&S
and which were described in a posting by Bjarne Stroustrup last November.

> How compatible is G++ with the ANSI C++ standard ?

I'll leave this question to people more familiar with G++ (with a note that
it's inappropriate to talk about compatibility with a nonexistent standard;
there won't be an "ANSI-compatible C++ compiler" until there's an ANSI
standard -- at least).

-- William M. Miller, Glockenspiel, Ltd.; vice chair, X3J16
   wmm@world.std.com