Standard Compliance
ISO C++
The current standard for C++ is
International Standard ISO/IEC 14882-1998(E)
Programming languages -- C++.
A copy of the ISO C++ standard can be purchased on the WEB from the
ANSI Electronic Standards Store.
In the KAI C++ documentation, we refer to this standard as ISO C++.
When operating in C++ mode, KAI C++ is extremely close to ISO C++.
The C++ Deficiencies section of this
document lists all known places where KAI C++ deviates from ISO C++.
ISO C
The current standard for C is
International Standard ANSI/ISO 9899-1990 for Programming Languages C,
as modified by ANSI/ISO/IEC 9899-1996 Amendment 1: C Integrity.
A copy of the ISO C++ standard can be purchased on the WEB from the
ANSI Electronic Standards Store.
In the KAI C++ documentation, we refer to this standard as ISO C.
When operating in C mode, KAI C++ is conformant to ISO C.
POSIX Threads
The current standard for threads is
ISO/IEC 9945-1:1996 Information Technology
-- Portable Operating System Interface (POSIX) -- Part 1: System Application:
Program Interface (API) [C Language].
A copy of the POSIX Threads standard can be purchased on the WEB from the
IEEE Standards Catalog.
In the KAI C++ documentation, we refer to this standard as POSIX Threads.
KAI C++ does not provide an implementation of POSIX Threads.
Instead, each operating system manufacturer provides an implementation of
POSIX Threads. Conformance with the POSIX Threads standard is left
up to the operating system manufacturer.
KAI C++ does provide a command line option,
--thread_safe
,
which causes KAI C++ to generate code that is
compatible with the operating system's implementation
of POSIX Threads.
For C++ this means somewhat more than the traditional
re-entrant code.
It includes the use of the operating system's implementation
of POSIX Thread mutexs to control construction and destruction
of static objects, and other shared objects hidden from
the user.
Undocumented Deviations
If you encounter deviations from ISO C++, ISO C or POSIX Threads
that are not documented, please
let us know!
Checking Standard Conformance
Normally, KAI C++ operates in a relaxed mode where many common
extensions to C and C++ are accepted.
There are command line options for requesting that no extensions
to ISO C++ or ISO C be allowed.
ISO C++
There are two controls for checking comformance to ISO C++:
--strict
command line option to select
full compliance to ISO C++ syntax/semantics (chapters 1-16).
-D__KAI_STRICT
command line option
to select full compliance to ISO C++ class library (chapters 17-27).
Certain system have #include
files in the system header
file directories that are not standard conforming.
If you encounter compilation errors in system header files while
using --strict
, consider using the slightly
relaxed system specific forms of restrict that are available on
systems that have these problems.
(for example: --linux_strict
).
ISO C
Use the --c --strict
command line options
to select full conformance to ISO C.
C++ Deficiencies
Syntax/Semantic Features
These elements of the language syntax or semantics are not implemented
in KAI C++ version 3.4.
- Reinterpret_cast does not allow casting a pointer to member of one
class to a pointer to member of another class if the classes are unrelated
- Two-phase name binding in templates, as described in [temp.res] and
[temp.dep] of the standard
- Putting a try/catch around the initializers and body of a
constructor
- Template template parameters
- Universal character set escapes (e.g.,
\uabcd
)
- The
export
keyword for templates
Class Library Features
These elements of the standard class library are not implemented
in KAI C++ version 3.4.
- Selecting locale by "name"
- Class library functions that require parameters of types
wchar
- The default namespace and the
std
namespace
both contain the name of some extern "C"
library
functions.
Copyright © 1999 by Kuck & Associates, Inc. All rights reserved.