
On HP-UX/aCC6, iostreams library test code_converter_test fails to link. This is caused by a (home-added) feature of Rogue Wave library on this platform which is that for codecvt to be instantiated on anything but types listed in Table 51 -- Locale Category Facets in 22.1.1.1.1 - Type locale::category, the program must be compiled with _HP_INSTANTIATE_STD2_VL macro defined. Here is small reproducer: x.cpp ----- #include <locale> struct S {}; int main() { std::codecvt_byname<wchar_t,char,S>* x = new std::codecvt_byname<wchar_t,char,S>(""); } bash-3.00$ aCC x.cpp ld: Unsatisfied symbol "virtual table of std::codecvt<wchar_t,char,S>" in file x.o ld: Unsatisfied symbol "type info of std::codecvt<wchar_t,char,S>" in file x.o 2 errors. bash-3.00$ aCC x.cpp -D_HP_INSTANTIATE_STD2_VL bash-3.00$ Attached patch modifies boost/iostreams/detail/config/wide_streams.hpp to define _HP_INSTANTIATE_STD2_VL macro for HP-UX/aCC. I verified, that with this fix, iostreams library test code_converter_test pass. I also verified, that the fix does not cause any regressions. Please, apply this patch. If the patch is applied only to HEAD, please, mark iostreams library test code_converter_test expected failure for toolset "acc". Thanks, Boris Index: wide_streams.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/iostreams/detail/config/wide_streams.hpp,v retrieving revision 1.7 diff -r1.7 wide_streams.hpp 20a21,24
#if defined(__HP_aCC) && !defined(_HP_INSTANTIATE_STD2_VL) # define _HP_INSTANTIATE_STD2_VL #endif