Preliminary documentation for Ice 3.7.1 Beta. Do not use in production applications. Refer to the space directory for other releases.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Ice provides two distinct C++ mappings:

  • C++98
    This was the only C++ mapping provided by Ice until version 3.6. This mapping relies only on features present in the ISO/IEC 14882:1998 C++ standard, informally known as C++98. It includes its own helper classes for smart pointers, threads, mutexes and so on.

  • C++11 
    This is a new mapping that takes advantage of features in the ISO/IEC 14882:2011 C++ standard, and occasionally newer features. This mapping requires a recent C++ compiler in C++11 or C++14/17 mode.

This chapter describes these two mappings in detail. When the same rule applies to both mappings, this rule is simply described as part of the "C++ mapping". 

slice2cpp, the Slice-to-C++ translator, always generates code for both mappings, and C++ headers files provided by Ice, such as Ice/Ice.h and IceGrid/IceGrid.h, can be used with either mapping.

The C++98 mapping is provided for backwards compatibility, and will not be included in future releases. If you are starting a new project with Ice, please use the C++11 mapping. If you are upgrading an existing application, you should consider upgrading your code to use the C++11 mapping.

Selecting the C++98 Mapping

The default Ice for C++ mapping is currently C++98, and you do not need to do anything special to select this mapping.

The Ice C++11 and Ice C++98 libraries are built from the same source code, in ice/cpp. The resulting C++ libraries are nevertheless language mapping specific: libIce++11.so is for the Ice C++11 mapping, while libIce.so is for the Ice C++98 mapping.

  • No labels