GNU C++ Standard Library
Keywords: libstdc++, homepage, home, C++, library, c++, std, g++, ABI, STL

All of these documents (in fact, this entire homepage set) are bundled with the library source, under the `docs` subdirectory, for releases and snapshots. The sole exception is the automatically-generated source documentation, available separately.

## Introduction

This is a short list of text files pertaining to this implementation of ISO 14882. A brief description may follow the name of the file.

- License - GPL v2 license terms
- ABI Policy and Guidelines
- BUGS
- PROBLEMS - target-specific known issues
- README - directory structure
- RELEASE-NOTES - latest version info, recent changes and news
- TODO - tasks yet undone
- FAQ (HTML), FAQ (text)

## Configuring, Building, Installing

- Configure options
- Getting started: configure, build, install
- Debugging schemes and strategies

## Source-Level Documentation

The library sources have been specially formatted so that with the proper invocation of another tool (Doxygen), a set of HTML pages are generated from the sources files themselves. The resultant documentation is referred to as Source-Level Documentation, and is useful for examining the signatures of public member functions for the library classes, finding out what is in a particular include file, looking at inheritance diagrams, etc.

The Source-Level documentation can be viewed online:

- for the 3.1 release
- for the 3.2.1 release
- "the latest collection" (for the snapshot or later; see the date on the first page)

This generated HTML collection, as above, is also available for download in the libstdc++ snapshots directory at `<URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/>`. You will almost certainly need to use one of the mirror sites to download the tarball. After unpacking, simply load libstdc++-html-*/index.html into a browser. Feedback (and additional documentation!) is welcome.

In addition, an initial set of man pages are also available in the same place as the HTML collections. Start with Intro(3).

## Chapter-Specific Documentation

Information, extensions, notes and advice on specific implementation capabilites and/or liabilities broken down into chapter names based on the C++ standard.

- Library Introduction (Chapter 17)
  - The Standard C++ header files
  - The Standard C++ library and multithreading
  - `<foo>` vs `<foo.h>`
  - Porting HOWTO
  - Behavior specific to libstdc++-v3
  - Preprocessor macros controlling the library
- Library Support (Chapter 18)
  - Types
  - Implementation properties
  - Start and Termination
  - Dynamic memory management
  - RTTI, the ABI, and demangling
- Diagnostics (Chapter 19)
  - Adding data to exceptions
  - Exception class hierarchy diagram
  - Concept checkers -- new and improved!
  - Verbose `terminate`
- General Utilities (Chapter 20)
  - `auto_ptr` is not omnipotent
  - `auto_ptr` inside container classes
  - Functors
  - Pairs
- Strings (Chapter 21)
  - MFC's CString
  - A case-insensitive string class
  - Breaking a C++ string into tokens
  - Simple transformations
  - Making strings of arbitrary character types
- Localization (Chapter 22)
  - class locale
  - class codecvt
  - class ctype
  - class messages
  - Bjarne Stroustrup on Locales
  - Nathan Myers on Locales
  - Correct Transformations
- Containers (Chapter 23)
  - Making code unaware of the container/array difference
  - Variable-sized bitmasks
  - Containers and multithreading
  - "Hinting" during insertion
  - Bitmasks and string arguments
  - `std::list::size()` is O(n)!
  - Space overhead management for vectors
- Iterators (Chapter 24)
  - They ain't pointers!
  - It ends where?
- Algorithms (Chapter 25)
  - Prerequisites
  - Special `swap`s
- Numerics (Chapter 26)
  - Complex Number Processing
  - Array Processing
  - Numerical Functions
  - C99
- Input/Output (Chapter 27)
  - Copying a file
  - The buffering is screwing up my program!
  - Binary I/O
  - What is this <sstream>/stringstreams thing?
  - Deriving a stream buffer
  - More on binary I/O
  - Pathetic performance? Ditch C.
  - Threads and I/O
  - Which header?
- Extensions to the Standard Library
  - Ropes and trees and hashes, oh my!
  - Added members and types
  - Allocators (versions 3.0, 3.1, 3.2)
  - Allocators (version 3.3)
  - Compile-time checks
  - LWG Issues

## Contributor-Specific Information

- Contributor checklist
- Copyright assignment form for libstdc++-v3
- BADNAMES - names to avoid because of potential collisions
- C++STYLE - coding style by example
- CHECKLIST - a list of required features and their status.
- DESIGN - overview of the implementation plan
- HEADER_POLICY - header naming and sub-include structure

Return to the libstdc++ homepage.

See license.html for copying conditions. Comments and suggestions are welcome, and may be sent to the libstdc++ mailing list.