next up previous
Next: Abstract Data Types Up: The GNU C++ Library Previous: The GNU C++ Library


The GNU C++ library ( libg++) was among the first widely available general-purpose C++ class libraries. Some classes were designed and implemented as early as 1985 (originally in support of other efforts). The library was made available in 1987. I was the primary original developer. Several others have contributed ideas and code. Contributors include Dirk Grunwald, Doug Schmidt, Kurt Baudendistel, Marc Shapiro, Eric Newton, Michael Tiemann, Richard Stallman, and Per Bothner. Cygnus Support currently maintains and distributes the library on behalf of the Free Software Foundation (FSF). Also, hundreds of users have contributed improvements, fixes, suggestions, clarifications, and bug reports. While it has been ported to other platforms, libg++ is normally used on Unix systems in conjunction with the GNU C++ ( g++) compiler. It is available via anonymous ftp from, among other sources.

The basic structure of libg++ remains almost unchanged from that described in a 1988 Usenix C++ conference paper. It contains:

  1. Classes representing strings, numbers, and other black box values, along with similar Abstract Data Type (ADT) classes representing sets, sequences, maps, etc.
  2. IO Streams and related support provided by any minimal C++ library.
  3. Storage allocation classes and utilities.
  4. ``Lightweight'' veneers organizing functionality commonly supported in C libraries.
  5. A few other uncategorizable classes and sample applications.

Libg++ is mainly an ``abstract data structure library''. Most libg++ classes are somewhat different in design philosophy, design, and implementation than the classes that you or I ordinarily construct for specific applications. The remainder of this article focuses mainly on these differences without otherwise going into much detail about particular components.

next up previous
Next: Abstract Data Types Up: The GNU C++ Library Previous: The GNU C++ Library

Doug Lea@Sun Apr 16 06:37:14 EDT 1995