"libc++" C++ Standard Library

libc++ is an implementation of the C++ standard library, targeting C++11, C++14 and above.

All of the code in libc++ is dual licensed under the MIT license and the UIUC License (a BSD-like license).

New Documentation Coming Soon!

Looking for documentation on how to use, build and test libc++? If so checkout the new libc++ documentation.

Click here for the new libc++ documentation.

Features and Goals

Why a new C++ Standard Library for C++11?

After its initial introduction, many people have asked "why start a new library instead of contributing to an existing library?" (like Apache's libstdcxx, GNU's libstdc++, STLport, etc). There are many contributing reasons, but some of the major ones are:

Platform Support

libc++ is known to work on the following platforms, using g++ and clang. Note that functionality provided by <atomic> is only functional with clang.

The library also supports Windows (both MSVC-style environments, built with clang-cl, and MinGW environments), although support for Windows is less mature than for the platforms listed above.

Current Status

libc++ is a 100% complete C++11 implementation on Apple's OS X.

LLVM and Clang can self host in C++ and C++11 mode with libc++ on Linux.

libc++ is also a 100% complete C++14 implementation. A list of new features and changes for C++14 can be found here.

libc++'s C++17 implementation is not yet complete. A list of features and changes for C++17 can be found here.

A list of features and changes for the next C++ standard, known here as "C++2a" (probably to be C++20) can be found here.

Implementation of the post-C++14 Technical Specifications is in progress. A list of features and the current status of these features can be found here.

As features get moved from the Technical Specifications into the main standard, we will (after a period for migration) remove them from the TS implementation. This process is detailed here.

Build Bots

The latest libc++ build results can be found at the following locations.

Get it and get involved!

First please review our Developer's Policy. The documentation for building and using libc++ can be found below.

Notes and Known Issues

Send discussions to the libc++ mailing list.

Bug reports and patches

If you think you've found a bug in libc++, please report it using the LLVM Bugzilla. If you're not sure, you can post a message to the libcxx-dev mailing list or on IRC.

If you want to contribute a patch to libc++, the best place for that is Phabricator. Please add libcxx-commits as a subscriber.

Design Documents