This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [libstdc++ PATCH] libstdc++ debug mode (fourth try)


On Wednesday, August 6, 2003, at 6:58AM, Pétur Runólfsson wrote:
Hi,

Just a small nit about the documentation:

Index: docs/html/debug.html
[...]
! <p>libstdc++ includes many extensions to the C++ standard library. In
! some cases the extensions are obvious, such as the hashed
! associative containers, whereas other extensions give predictable
! results to behavior that would otherwise be undefined, such as
! throwing an exception when a <code>std::basic_string</code> is
! constructed from a NULL character pointer. This latter category also
! includes implementation-defined and unspecified semantics,


The last sentence seems somewhat misleading. Implementation-defined
behaviour (as defined in 1.3.5) is quite distinct from undefined
behaviour, and is (or should be) predictable (since it is required to be
documented). Unspecified behaviour is also different from undefined
behaviour, and is not an extension.

But in all cases you are relying upon behavior that the C++ standard does not guarantee, so your code may not be portable to other implementations of the standard library.


Also, I don't see any place where the debug mode warns about
implementation-defined or unspecified behaviour (but I may be missing
something).

There aren't many places where this occurs, but vector capacity is one of them: in pedantic mode, the vector tracks the capacity that is guaranteed by the standard, e.g., the greatest size the container has attained or the largest value that has been passed to reserve(). Strings provide examples of libstdc++ extensions that we'll complain about, because construction with a NULL string is undefined behavior but libstdc++ throws an exception.


Doug
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]