[
https://issues.apache.org/jira/browse/STDCXX-1055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13201523#comment-13201523
]
Travis Vitek commented on STDCXX-1055:
--------------------------------------
I'm also unsure how (1) would be detectable and would be interested to see a
testcase. That said, there seems to be a mix of class/struct among the locale
and locale facet classes. I don't see any reason to not unconditionally fix
this, provided it doesn't break due to name mangling on some platforms.
It appears that a conditional fix was put into place for (2) for STDCXX-469. It
should be automatically enabled for all compilers non Microsoft compilers now,
and will be automatically fixed for Microsoft if/when stdcxx has a major
release.
Finally, it seems that (3) would be easy to detect, but I see nothing in the
standard that requires the {{*_base}} classes to have virtual destructors. The
derived classes must, but that virtual destructor for those classes should come
from the base {{std::locale::facet}}.
> some of the localization class declarations do not follow the
> ISO/IEC:14882:2003 specification
> ----------------------------------------------------------------------------------------------
>
> Key: STDCXX-1055
> URL: https://issues.apache.org/jira/browse/STDCXX-1055
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 22. Localization
> Affects Versions: 4.2.1, 4.2.2, 4.2.x, 4.3.x, 5.0.0
> Environment: 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.
> Reporter: Stefan Teleman
> Labels: conformance, standards
> Fix For: 4.2.x, 4.3.x, 5.0.0
>
> Attachments: stdcxx-1055.patch
>
>
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira