Namespace pollution binder errors

As of z/OS® V1R8 XL C/C++ compiler, when you target OS/390® V2R10 or an earlier release while binding or linking your application, you might encounter the namespace pollution error shown in Figure 1.
Note: z/OS V1R1 C/C++ compiler is the same as OS/390 V2R10 C/C++ compiler. OS/390 V2R10 is also reshipped in z/OS V1R2 through to V1R6.
Figure 1. IEW2456E namespace pollution error
IEW2456E 9207 SYMBOL terminate__3stdFv UNRESOLVED. MEMBER COULD NOT BE INCLUDED 
         FROM THE DESIGNATED CALL LIBRARY.
FSUM3065 The LINKEDIT step ended with return code 8.
If you encounter the error shown in Figure 1, use the code shown in Figure 2 inside a header file that is included by the affected source.
Figure 2. Header file code that handles IEW2456E error condition
#ifdef __cplusplus
#if ((__COMPILER_VER__ >= 0x41080000) && (__TARGET_LIB__ == 0x220A0000))  
namespace std { void terminate(); }
#pragma map(std::terminate, "terminate__Fv")
#endif
#endif
Note: To prevent targeting an inappropriate release, guard the #pragma map statement with the __TARGET_LIB__ macro.