index.html revision ee7a0bf265499a87948e152e9d3a1bedcb9e896c
1d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant "http://www.w3.org/TR/html4/strict.dtd"> 3bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ --> 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant<html> 5bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant<head> 6bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <title>"libc++" C++ Standard Library</title> 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <link type="text/css" rel="stylesheet" href="menu.css"> 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <link type="text/css" rel="stylesheet" href="content.css"> 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant</head> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant<body> 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant<div id="menu"> 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <div> 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <a href="http://llvm.org/">LLVM Home</a> 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </div> 17d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <div class="submenu"> 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <label>libc++ Info</label> 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <a href="/index.html">About</a> 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </div> 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <div class="submenu"> 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <label>Quick Links</label> 25a535ffd99d3702ab065647e28e83c2b7d720be3dChris Lattner <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a> 26a535ffd99d3702ab065647e28e83c2b7d720be3dChris Lattner <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a> 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <a href="http://llvm.org/bugs/">Bug Reports</a> 2876e1ffc6036a7e772827228e4626280caddbc354Howard Hinnant <a href="http://llvm.org/svn/llvm-project/libcxx/trunk/">Browse SVN</a> 2976e1ffc6036a7e772827228e4626280caddbc354Howard Hinnant <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/">Browse ViewVC</a> 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </div> 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant</div> 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant<div id="content"> 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--*********************************************************************--> 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <h1>"libc++" C++ Standard Library</h1> 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--*********************************************************************--> 37d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <p>libc++ is a new implementation of the C++ standard library, targeting 39af3473404e13e758ac482a1fd59d7dad2bb0d612Howard Hinnant C++11.</p> 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 41f38bc6efc52ff2c773582d5b62dd53aaa92c186cChris Lattner <p>All of the code in libc++ is <a 42f38bc6efc52ff2c773582d5b62dd53aaa92c186cChris Lattner href="http://llvm.org/docs/DeveloperPolicy.html#license">dual licensed</a> 43f38bc6efc52ff2c773582d5b62dd53aaa92c186cChris Lattner under the MIT license and the UIUC License (a BSD-like license).</p> 44d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <h2 id="goals">Features and Goals</h2> 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 48d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <ul> 50af3473404e13e758ac482a1fd59d7dad2bb0d612Howard Hinnant <li>Correctness as defined by the C++11 standard.</li> 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>Fast execution.</li> 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>Minimal memory use.</li> 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>Fast compile times.</li> 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>ABI compatibility with gcc's libstdc++ for some low-level features 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant such as exception objects, rtti and memory allocation.</li> 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>Extensive unit tests.</li> 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </ul> 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 6024173b81dd527a38b32e037082f7d1578213d626Chris Lattner <h2 id="why">Why a new C++ Standard Library for C++'0x?</h2> 6124173b81dd527a38b32e037082f7d1578213d626Chris Lattner <!--=====================================================================--> 62d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 6324173b81dd527a38b32e037082f7d1578213d626Chris Lattner <p>After its initial introduction, many people have asked "why start a new 6424173b81dd527a38b32e037082f7d1578213d626Chris Lattner library instead of contributing to an existing library?" (like Apache's 6524173b81dd527a38b32e037082f7d1578213d626Chris Lattner libstdcxx, GNU's libstdc++, STLport, etc). There are many contributing 6624173b81dd527a38b32e037082f7d1578213d626Chris Lattner reasons, but some of the major ones are:</p> 67d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 6824173b81dd527a38b32e037082f7d1578213d626Chris Lattner <ul> 6924173b81dd527a38b32e037082f7d1578213d626Chris Lattner <li><p>From years of experience (including having implemented the standard 7024173b81dd527a38b32e037082f7d1578213d626Chris Lattner library before), we've learned many things about implementing 7124173b81dd527a38b32e037082f7d1578213d626Chris Lattner the standard containers which require ABI breakage and fundamental changes 7224173b81dd527a38b32e037082f7d1578213d626Chris Lattner to how they are implemented. For example, it is generally accepted that 7324173b81dd527a38b32e037082f7d1578213d626Chris Lattner building std::string using the "short string optimization" instead of 7424173b81dd527a38b32e037082f7d1578213d626Chris Lattner using Copy On Write (COW) is a superior approach for multicore 75a5058d9a0d5e60adcd9118dfe7f886effd6a6206Chris Lattner machines (particularly in C++'0x, which has rvalue references). Breaking 76a5058d9a0d5e60adcd9118dfe7f886effd6a6206Chris Lattner ABI compatibility with old versions of the library was 7724173b81dd527a38b32e037082f7d1578213d626Chris Lattner determined to be critical to achieving the performance goals of 7824173b81dd527a38b32e037082f7d1578213d626Chris Lattner libc++.</p></li> 79d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 8024173b81dd527a38b32e037082f7d1578213d626Chris Lattner <li><p>Mainline libstdc++ has switched to GPL3, a license which the developers 8124173b81dd527a38b32e037082f7d1578213d626Chris Lattner of libc++ cannot use. libstdc++ 4.2 (the last GPL2 version) could be 8224173b81dd527a38b32e037082f7d1578213d626Chris Lattner independently extended to support C++'0x, but this would be a fork of the 83f33824922812487c1e7f24852975b0e06792eb7eChris Lattner codebase (which is often seen as worse for a project than starting a new 84f33824922812487c1e7f24852975b0e06792eb7eChris Lattner independent one). Another problem with libstdc++ is that it is tightly 85f33824922812487c1e7f24852975b0e06792eb7eChris Lattner integrated with G++ development, tending to be tied fairly closely to the 86f33824922812487c1e7f24852975b0e06792eb7eChris Lattner matching version of G++.</p> 8724173b81dd527a38b32e037082f7d1578213d626Chris Lattner </li> 8824173b81dd527a38b32e037082f7d1578213d626Chris Lattner 8924173b81dd527a38b32e037082f7d1578213d626Chris Lattner <li><p>STLport and the Apache libstdcxx library are two other popular 9024173b81dd527a38b32e037082f7d1578213d626Chris Lattner candidates, but both lack C++'0x support. Our experience (and the 91af3473404e13e758ac482a1fd59d7dad2bb0d612Howard Hinnant experience of libstdc++ developers) is that adding support for C++11 (in 9224173b81dd527a38b32e037082f7d1578213d626Chris Lattner particular rvalue references and move-only types) requires changes to 9324173b81dd527a38b32e037082f7d1578213d626Chris Lattner almost every class and function, essentially amounting to a rewrite. 94bfa808e093b1bd53832a9aa245d27b1b95827bbfChris Lattner Faced with a rewrite, we decided to start from scratch and evaluate every 95bfa808e093b1bd53832a9aa245d27b1b95827bbfChris Lattner design decision from first principles based on experience.</p> 96d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 9724173b81dd527a38b32e037082f7d1578213d626Chris Lattner <p>Further, both projects are apparently abandoned: STLport 5.2.1 was 9824173b81dd527a38b32e037082f7d1578213d626Chris Lattner released in Oct'08, and STDCXX 4.2.1 in May'08.</p> 9924173b81dd527a38b32e037082f7d1578213d626Chris Lattner 10024173b81dd527a38b32e037082f7d1578213d626Chris Lattner </ul> 10124173b81dd527a38b32e037082f7d1578213d626Chris Lattner 10224173b81dd527a38b32e037082f7d1578213d626Chris Lattner <!--=====================================================================--> 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <h2 id="requirements">Platform Support</h2> 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <p>libc++ is known to work on the following platforms, using g++-4.2 and 107af3473404e13e758ac482a1fd59d7dad2bb0d612Howard Hinnant clang (lack of C++11 language support disables some functionality).</p> 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <ul> 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>Mac OS X i386</li> 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li>Mac OS X x86_64</li> 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </ul> 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <h2 id="dir-structure">Current Status</h2> 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 118d0e811a37d2c263a602ace05648f9ecaf8b59663Howard Hinnant <p><a href="libcxx_by_chapter.pdf">Here</a> is a by-chapter breakdown of what 119d0e811a37d2c263a602ace05648f9ecaf8b59663Howard Hinnant is passing tests and what isn't. This chart is currently based on testing 12030055c68d4760fac2c41650e43f9e6b7b725197fHoward Hinnant against clang++ with -std=c++11 on Apple's OS X. </p> 121d0e811a37d2c263a602ace05648f9ecaf8b59663Howard Hinnant 1220cbb3a16e258e2cebcb827af310ffe43ecaee508Howard Hinnant <p> 123ee7a0bf265499a87948e152e9d3a1bedcb9e896cHoward Hinnant Ports to other platforms are underway. Here are recent test 124ee7a0bf265499a87948e152e9d3a1bedcb9e896cHoward Hinnant results for <a href="results.Windows.html">Windows</a> 125ee7a0bf265499a87948e152e9d3a1bedcb9e896cHoward Hinnant and <a href="results.Linux.html">Linux</a>. 1260cbb3a16e258e2cebcb827af310ffe43ecaee508Howard Hinnant </p> 1270cbb3a16e258e2cebcb827af310ffe43ecaee508Howard Hinnant 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <h2>Get it and get involved!</h2> 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <!--=====================================================================--> 131d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 1322481cba8b7eb98b939a0b36d85f552917a63816dHoward Hinnant <p>First please review our 1332481cba8b7eb98b939a0b36d85f552917a63816dHoward Hinnant <a href="http://llvm.org/docs/DeveloperPolicy.html">Developer's Policy</a>. 1342481cba8b7eb98b939a0b36d85f552917a63816dHoward Hinnant 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <p>To check out the code, use:</p> 136d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant 137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <ul> 1384b748953a2d51c34127aa9c593477966242e1898Chris Lattner <li><code>svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx</code></li> 13965451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant </ul> 14065451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 141704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant <p> 142704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant On Mac OS 10.7 (Lion), the easiest way to get this library is to install 143704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant Xcode 4.2 or later. However if you want to install tip-of-trunk from here 144271a1c03c309f20bb8cdbb0b0af7ad563bdc866dHoward Hinnant (getting the bleeding edge), read on. However, be warned that Mac OS 145271a1c03c309f20bb8cdbb0b0af7ad563bdc866dHoward Hinnant 10.7 will not boot without a valid copy of <code>libc++.1.dylib</code> in 146271a1c03c309f20bb8cdbb0b0af7ad563bdc866dHoward Hinnant <code>/usr/lib</code>. 147704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant </p> 148704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant 149704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant <p>To build on Mac OS X 10.6 (Snow Leopard), you need a helper library and header 15065451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <a href="http://home.roadrunner.com/~hinnant/libcppabi.zip">found here</a>. 151704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant cp cxxabi.h to /usr/include, and cp libc++abi.dylib to /usr/lib. On Mac OS 152704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant X 10.7 (Lion) and later, this helper library and header are already installed 153704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant for you. 15465451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <p> 15565451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 15665451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <p> 15765451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant Next: 15865451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant </p> 15965451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 16065451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <ul> 16165451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>cd libcxx/lib</code></li> 16265451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>export TRIPLE=-apple-</code></li> 163704f09b21245cee8a775fdb9962ed40de0f94b04Howard Hinnant <li>Only on 10.6: <code>export MACOSX_DEPLOYMENT_TARGET=10.6</code></li> 16465451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>/buildit</code></li> 16565451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant </ul> 16665451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 16765451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <p> 16865451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant That should result in a libc++.1.dylib. To install it I like to use links 16965451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant instead of copying, but either should work: 17065451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant </p> 17165451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 17265451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <ul> 17365451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>cd /usr/lib</code></li> 1745a245dbf526fb8edb6cdc350f6a0901663f09437Howard Hinnant <li><code>sudo ln -sf path-to-libcxx/lib/libc++.1.dylib libc++.1.dylib</code></li> 1755a245dbf526fb8edb6cdc350f6a0901663f09437Howard Hinnant <li><code>sudo ln -sf libc++.1.dylib libc++.dylib</code></li> 17665451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>cd /usr/include/c++</code></li> 17765451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>sudo ln -sf path-to-libcxx/include v1</code></li> 17865451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant </ul> 17965451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 18065451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <p> 18165451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant To use with clang you can: 18265451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant </p> 18365451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant 18465451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <ul> 18565451f15493a16a541d82f0591ba27506f2793b1Howard Hinnant <li><code>clang++ -stdlib=libc++ test.cpp</code></li> 186af3473404e13e758ac482a1fd59d7dad2bb0d612Howard Hinnant <li><code>clang++ -std=c++11 -stdlib=libc++ test.cpp</code></li> 187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </ul> 188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <p>To run the libc++ test suit (recommended):</p> 190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <ul> 1924b748953a2d51c34127aa9c593477966242e1898Chris Lattner <li><code>cd libcxx/test</code></li> 193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant <li><code>/testit</code></li> 194f5d76a7afce1d593634004566066c8e593a14adeHoward Hinnant <ul> 1958b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant <li>On Mac OS 10.6, to work around bugs in libc headers like 1968b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant math.h and inttypes.h, add "-U__STRICT_ANSI__" and 1978b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant "-D__STDC_FORMAT_MACROS" to the command line with: 1988b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant <blockquote> 199af3473404e13e758ac482a1fd59d7dad2bb0d612Howard Hinnant <pre>export OPTIONS="-std=c++11 -stdlib=libc++ -U__STRICT_ANSI__ -D__STDC_FORMAT_MACROS"</pre> 2008b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant </blockquote></li> 2018b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant <li>People porting libc++ to other OSes will likely have to 2028b3fae3cc7f7b249884b16f95b1599d7e5bce775Howard Hinnant define similar macros.</li> 203f5d76a7afce1d593634004566066c8e593a14adeHoward Hinnant </ul> 204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant </ul> 205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 20651065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant <!--=====================================================================--> 20751065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant <h3>Notes</h3> 20851065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant <!--=====================================================================--> 20951065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant 21051065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant<p> 21151065657aa5d421b8e41d16d66da707a7237adb0Howard HinnantBuilding libc++ with <code>-fno-rtti</code> is not supported. However linking 21251065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnantagainst it with <code>-fno-rtti</code> is supported. 21351065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant</p> 21451065657aa5d421b8e41d16d66da707a7237adb0Howard Hinnant 215d2bb03207523e55aa2423570bcaaad03e779450cHoward Hinnant <p>Send discussions to the 2168c21737c03f3b266d8679d56faa6b6d091e7f2f1Howard Hinnant (<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">clang mailing list</a>).</p> 2178c21737c03f3b266d8679d56faa6b6d091e7f2f1Howard Hinnant 21856f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant <!--=====================================================================--> 21956f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant <h2>Design Documents</h2> 22056f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant <!--=====================================================================--> 22156f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant 22256f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant<ul> 22356f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant<li><a href="atomic_design.html"><tt><atomic></tt></a></li> 2249835d761695b7d54e7d231dd1fe682597f249349Howard Hinnant<li><a href="type_traits_design.html"><tt><type_traits></tt></a></li> 225820e00755aa68e10badd62c78ab6defec5b3c64dHoward Hinnant<li><a href="http://marshall.calepin.co/llvmclang-and-standard-libraries-on-mac-os-x.html">Excellent notes by Marshall Clow</a></li> 22656f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant</ul> 22756f0d5be064ed82f439e1596a272237697077ec3Howard Hinnant 228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant</div> 229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant</body> 2304b748953a2d51c34127aa9c593477966242e1898Chris Lattner</html> 231