stdcxx-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Teleman (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (STDCXX-1055) some of the localization class declarations do not follow the ISO/IEC:14882:2003 specification
Date Mon, 06 Feb 2012 22:50:59 GMT

    [ https://issues.apache.org/jira/browse/STDCXX-1055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13201735#comment-13201735
] 

Stefan Teleman commented on STDCXX-1055:
----------------------------------------

You aren't verifying that the destructor is virtual or not, because you can't really do that
without looking inside the __vtbl. You are testing for the value of bool virtual_destructor.
This variable has nothing to do with the interface specification of your class. It isn't even
a member of the class. I am not sure what this proves.

You are correct: the Standard doesn't require virtual destructors. It doesn't *forbid* them,
either.

Is there such a variable (bool virtual_destructor) in money_base or time_base which would
allow for this test?

Also, I am a bit confused at the assertion that "destructors cannot be virtual" (in spite
of the fact that there is no way of testing for them), but breaking the interface specification
of all the localization classes by making their destructors public, and therefore allowing
direct instantiation, is somehow OK. I will submit that one of the purposes of making all
these destructors protected *was* to make direct instantiation impossible.




                
> 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

        

Mime
View raw message