15
For more information about the general requirements of a mapping from OMG IDL to any programming language, refer to Section 14.1, "Requirements for a Language Mapping," on page 14-1.
15.1.1 Compliance
The C++ mapping tries to avoid limiting the implementation freedoms of ORB developers. For each OMG IDL and CORBA construct, the C++ mapping explains the syntax and semantics of using the construct from C++. A client or server program conforms to this mapping-is CORBA-C++ compliant-if it uses the constructs as described in the C++ mapping chapters. An implementation conforms to this mapping if it correctly executes any conforming client or server program. A conforming client or server program is therefore portable across all conforming implementations. For more information about CORBA compliance, refer to Section 0.6, "Definition of CORBA Compliance".
15.1.2 C++ Implementation Requirements
The mapping proposed here assumes that the target C++ environment supports all the features described in The Annotated C++ Reference Manual (ARM) by Ellis and Stroustrup as adopted by the ANSI/ISO C++ standardization committees, including exception handling. In addition, it assumes that the C++ environment supports the namespace construct recently adopted into the language. Because C++ implementations vary widely in the quality of their support for templates, this mapping does not explicitly require their use, nor does it disallow their use as part of a CORBA-compliant implementation. 15.1.3 C Data Layout Compatibility
Some ORB vendors feel strongly that the C++ mapping should be able to work directly with the CORBA C mapping. This mapping makes every attempt to ensure compatibility between the C and C++ mappings, but it does not mandate such compatibility. In addition to providing better interoperability and portability, the C++ call style solves the memory management problems seen by C programmers who use the C call style. Therefore, the OMG has adopted the C++ call style for OMG IDL. However, to provide continuity for earlier applications, an implementation might choose to support the C call style as an option. If an implementation supports both call styles, it is recommended that the C call style be phased out.
15.1.4 No Implementation Descriptions
This mapping does not contain implementation descriptions. It avoids details that would constrain implementations, but still allows clients to be fully source compatible with any compliant implementation. Some examples show possible implementations, but these are not required implementations. 15.2 Organization of the C++ Mapping
In addition to this overview, the mapping of OMG IDL to the C++ programming language is divided into the following chapters: