[patch] Remove invalid test on non-const empty strings
chris jefferson
caj@cs.york.ac.uk
Fri Jan 21 09:02:00 GMT 2005
Paolo Carlini wrote:
> Chris Jefferson wrote:
>
>> As we are testing empty strings, size()==0. Therefore we can only
>> perform the operation "s[0]" where s is the empty string when s is
>> const (when s[0] will return charT()). When s is non-const the
>> operation is undefined. The test tries to access s[0] on an empty
>> string s on both const and non-const strings. Therefore this patch
>> fixes things up.
>
>
> I see your point, but I think the issue is somewhat debatable, and
> much more general, actually. In this sense: according to 21.3.4, as
> you point out above, "the behavior is undefined". Now, it happens,
> that, *given our current implementation*, if things are not broken, we
> mus return '\0' in this case too.
>
> Therefore, the general issue is the following: should our testsuite
> only test what the standard mandates or, when appropriate, request, so
> to speak, "more" from the code, for instance specific behaviors when
> the behavior is strictly speaking undefined? I don't think we have a
> very rigorous policy about this issue and, frankly, being an
> implementor that cares about *regressions* and *unexpected* changes of
> behavior, that is not being a seller of a "conformancy testsuite", I
> think the latter interpretation has its own advantages, in some cases.
>
> What do other people think?
>
Good point!
Perhaps then a better idea would be to wrap tests like this in a #ifndef
_GLIBCXX_DEBUG / #endif pair?
More information about the Libstdc++
mailing list