Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.2.1, 4.2.2, 4.2.x, 4.3.x, 5.0.0
-
Solaris 10 and 11, Linux (RedHat and OpenSUSE), Sun C++ Compiler 12.1, 12.2, 12.3, GCC4.
The defect is independent of platform or compiler.
-
Patch Available
-
Unit Test Broken
-
Incorrect Behavior
Description
For the following classes:
std::codecvt<> and its specializations
std::collate<> and its specializations
std::ctype<> and its specializations
std::ctype_byname<> and its specializations
std::messages<> and its specializations
std::messages_byname<> and its specializations
std::money_get<> and its specializations
std::moneypunct<> and is specializations
std::moneypunct_byname<> and its specializations
std::money_put<> and its specializations
std::num_get<> and its specializations
std::numpunct<> and its specializations
std::numpunct_byname<> and its specializations
std::num_put<> and its specializations
std::time_get<> and its specializations
std::time_get_byname<> and its specializations
std::time_put<> and its specializations
1. all these type declarations must be of class type (and not of struct type)
2. all these classes must have protected virtual destructors
3. all the corresponding *_base (time_base, money_base, etc), must have virtual destructors
The current implementation of these types as structs (with default public access
specifier on their non-virtual destructors) causes failures in Perennial CPPVS V8.1.
Changing the access specifier for these destructors requires some changes in the
stdcxx tests for localization.
Patch based on 4.2.1 to follow shortly.