C++ library function changes

Existing C++ library functions have been rewritten to better conform with C++ TR1 specifications.

In IBM® i 7.2 changes were made to provide C++ library extensions in support of standards, which were submitted to the C++ standards committee with Draft Technical Report on C++ Library Extensions, ISO/IEC DTR 19768. To read more about the standards, also known as C++ Technical report 1 (TR1), follow the link to: Draft Technical Report on C++ Library Extensions ISO/IEC DTR 19768.

With the introduction of this support in 7.2, it was necessary to rewrite some of the existing library functions to better conform with the C++ TR1 specification. Some of the changes added to the C++ STL header file require compiling with OPTION(*RTTIALL) to work properly on 7.2. Specifically, this includes functions within the header files <locale>, <functional>, and <memory>.

Any source code that uses non-standard facets in C++ locales might be affected and should be examined. The has_facet and use_facet functions were rewritten to take advantage of each facet's runtime type identification (RTTI) information. The generated C++ program might signal an MCH3601 (Pointer not set) exception within "std::type_info::operator==(const std::type_info&) const" if the source code is not compiled with the OPTION(*RTTIALL) C++ compiler option.