Apache C++ Standard Library - stdcxx

Copyright 2005-2008 The Apache Software Foundation.

This product includes software developed at The Apache Software Foundation
(http://www.apache.org/).

Portions of this software were developed at Rogue Wave Software, Inc.,
Copyright (c) 1994-2008.

This software contains code derived from the HP Standard Template Library,
Copyright (c) 1994 Hewlett-Packard Company.

This software contains PA-RISC assembly code,
Copyright (c) 2002 Hewlett-Packard Company.
