This is the mail archive of the
libstdc++@sourceware.cygnus.com
mailing list for the libstdc++ project.
Re: libstdc++ non-standard behaviors
- To: MichaelV at EDIFECS dot COM
- Subject: Re: libstdc++ non-standard behaviors
- From: "Martin v. Loewis" <martin at mira dot isdn dot cs dot tu-berlin dot de>
- Date: Sat, 30 Oct 1999 10:18:47 +0200
- CC: libstdc++ at sourceware dot cygnus dot com
- References: <8070C3A4E99ED211A63200105A19B99B3173B7@ECX1>
> There are various deficiencies in the libraries conformance to ANSI C++,
> some of which are well known, I'm sure.
Thanks for your bug report. Indeed they are well-known, please see
http://egcs.cygnus.com/bugs.html
(item "C++ Library not compliant")
> I'm curious what the status is on fixes/enhancements to some of
> these
In the same location, you'll find a pointer to libstdc++ v3.
> Also, how do I find out what version of the library (specifically
> the STL part) I am using?
The version of the library basically is the same as the one of the
compiler. So if you have gcc 2.95.1, the library is called "C++
library of gcc 2.95.1". In addition, each library has an ABI version
number (which is also used in the name of shared libraries); you'll
find the corresponding version e.g. in
ls -l /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/
libstdc++.a -> ../../../libstdc++.a.2.10.0
So with gcc 2.95.x, the ABI version of the library is 2.10.0. At
times, the header files change as well, which is reflected in the
"interface version". In gcc 2.95.x, the interface version is "3",
which means the compiler finds the header files in a "g++-3"
subdirectory.
As you can see, I didn't mention a version of "the STL part". The
standard library in GCC is based on the SGI STL, with modifications
and additions (in particular, the string class, and a libio-based
streams library). The version of STL which was used to produce the
library is only visisble in the ChangeLog; the most recent change was
1998-09-02 Jason Merrill <jason@yorick.cygnus.com>
* algorithm alloc.h defalloc.h hash_map.h hash_set.h iterator
memory pthread_alloc pthread_alloc.h rope ropeimpl.h stl_algo.h
stl_algobase.h stl_alloc.h stl_bvector.h stl_config.h
stl_construct.h stl_deque.h stl_function.h stl_hash_fun.h
stl_hash_map.h stl_hash_set.h stl_hashtable.h stl_heap.h
stl_iterator.h stl_list.h stl_map.h stl_multimap.h stl_multiset.h
stl_numeric.h stl_pair.h stl_queue.h stl_raw_storage_iter.h
stl_relops.h stl_rope.h stl_set.h stl_slist.h stl_stack.h
stl_tempbuf.h stl_tree.h stl_uninitialized.h stl_vector.h
tempbuf.h type_traits.h: Update to SGI STL 3.11.
Of course, there is a number of modifications to STL for use in GCC.
The version number of libio is available as value of
_G_IO_IO_FILE_VERSION (on my system, it's 0x20001).
Hope this helps,
Martin