Selecting the C++98 Mapping

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.