index.html revision 8b3fae3cc7f7b249884b16f95b1599d7e5bce775
1c81d5b6205bf762093632de2cd7125de3d10eed5Dmitry Shmidt<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2c81d5b6205bf762093632de2cd7125de3d10eed5Dmitry Shmidt          "http://www.w3.org/TR/html4/strict.dtd">
3c81d5b6205bf762093632de2cd7125de3d10eed5Dmitry Shmidt<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
4c81d5b6205bf762093632de2cd7125de3d10eed5Dmitry Shmidt<html>
5c81d5b6205bf762093632de2cd7125de3d10eed5Dmitry Shmidt<head>
6c81d5b6205bf762093632de2cd7125de3d10eed5Dmitry Shmidt  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <title>"libc++" C++ Standard Library</title>
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <link type="text/css" rel="stylesheet" href="menu.css">
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <link type="text/css" rel="stylesheet" href="content.css">
10bbda627478b0e9a312fea4662cd7cd8d6bdf82bfJeff Brown</head>
11bbda627478b0e9a312fea4662cd7cd8d6bdf82bfJeff Brown
12bbda627478b0e9a312fea4662cd7cd8d6bdf82bfJeff Brown<body>
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt<div id="menu">
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <div>
15e61a2d6db6113da5fad91660764afdb0596dbc46Dmitry Shmidt    <a href="http://llvm.org/">LLVM Home</a>
16e61a2d6db6113da5fad91660764afdb0596dbc46Dmitry Shmidt  </div>
177dd0f2072342a04eeead17ed975b639d89eb4589Dmitry Shmidt
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <div class="submenu">
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <label>libc++ Info</label>
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <a href="/index.html">About</a>
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </div>
2295613e49a5d2b830b45757efdb7144fd668f23aeDmitry Shmidt
2395613e49a5d2b830b45757efdb7144fd668f23aeDmitry Shmidt  <div class="submenu">
24648b7492d15bb4efaeebdfdd8bd261563a5f6227Dmitry Shmidt    <label>Quick Links</label>
25648b7492d15bb4efaeebdfdd8bd261563a5f6227Dmitry Shmidt    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a>
26648b7492d15bb4efaeebdfdd8bd261563a5f6227Dmitry Shmidt    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a>
27f9bdef99ce3b2858f2812c745a3d6bb093fb0e5dDmitry Shmidt    <a href="http://llvm.org/bugs/">Bug Reports</a>
28f9bdef99ce3b2858f2812c745a3d6bb093fb0e5dDmitry Shmidt    <a href="http://llvm.org/svn/llvm-project/libcxx/trunk/">Browse SVN</a>
29f9bdef99ce3b2858f2812c745a3d6bb093fb0e5dDmitry Shmidt    <a href="http://llvm.org/viewvc/llvm-project/libcxx/trunk/">Browse ViewVC</a>
30b58836ed5520bf4b769f76ef7dcb802af8c900b8Dmitry Shmidt  </div>
310cc49e8db007f71888bf706420edfc530cf4fbffMike J. Chen</div>
32b58836ed5520bf4b769f76ef7dcb802af8c900b8Dmitry Shmidt
33b58836ed5520bf4b769f76ef7dcb802af8c900b8Dmitry Shmidt<div id="content">
340cc49e8db007f71888bf706420edfc530cf4fbffMike J. Chen  <!--*********************************************************************-->
350cc49e8db007f71888bf706420edfc530cf4fbffMike J. Chen  <h1>"libc++" C++ Standard Library</h1>
36205f2142134d2f3475fe1f893575df8f809eede4Jeff Johnson  <!--*********************************************************************-->
37205f2142134d2f3475fe1f893575df8f809eede4Jeff Johnson
38205f2142134d2f3475fe1f893575df8f809eede4Jeff Johnson  <p>libc++ is a new implementation of the C++ standard library, targeting
39205f2142134d2f3475fe1f893575df8f809eede4Jeff Johnson     C++0X.</p>
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>All of the code in libc++ is <a
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     href="http://llvm.org/docs/DeveloperPolicy.html#license">dual licensed</a>
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     under the MIT license and the UIUC License (a BSD-like license).</p>
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <h2 id="goals">Features and Goals</h2>
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
49f1396b4ebf0d67866b9fba2655c3f9f3327fb0a2Stephen Smalley    <ul>
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt        <li>Correctness as defined by the (currently draft) C++0X standard.</li>
51cd44645b48dc2161fa6c018235aaf4b6a804d576Dmitry Shmidt        <li>Fast execution.</li>
52d620e6d0ba63c86303e656e844f89102588ffdb6Dmitry Shmidt        <li>Minimal memory use.</li>
53cd44645b48dc2161fa6c018235aaf4b6a804d576Dmitry Shmidt        <li>Fast compile times.</li>
54cd44645b48dc2161fa6c018235aaf4b6a804d576Dmitry Shmidt        <li>ABI compatibility with gcc's libstdc++ for some low-level features
55cd44645b48dc2161fa6c018235aaf4b6a804d576Dmitry Shmidt            such as exception objects, rtti and memory allocation.</li>
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt        <li>Extensive unit tests.</li>
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    </ul>
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <h2 id="why">Why a new C++ Standard Library for C++'0x?</h2>
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>After its initial introduction, many people have asked "why start a new
648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     library instead of contributing to an existing library?" (like Apache's
658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     libstdcxx, GNU's libstdc++, STLport, etc).  There are many contributing
668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     reasons, but some of the major ones are:</p>
678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <ul>
698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <li><p>From years of experience (including having implemented the standard
708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      library before), we've learned many things about implementing
718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      the standard containers which require ABI breakage and fundamental changes
728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      to how they are implemented.  For example, it is generally accepted that
738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      building std::string using the "short string optimization" instead of
748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      using Copy On Write (COW) is a superior approach for multicore
758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      machines (particularly in C++'0x, which has rvalue references).  Breaking
768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      ABI compatibility with old versions of the library was
778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      determined to be critical to achieving the performance goals of
788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      libc++.</p></li>
798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <li><p>Mainline libstdc++ has switched to GPL3, a license which the developers
818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      of libc++ cannot use.  libstdc++ 4.2 (the last GPL2 version) could be
828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      independently extended to support C++'0x, but this would be a fork of the
838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      codebase (which is often seen as worse for a project than starting a new
848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      independent one).  Another problem with libstdc++ is that it is tightly
858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt       integrated with G++ development, tending to be tied fairly closely to the
868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt       matching version of G++.</p>
87d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt    </li>
888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <li><p>STLport and the Apache libstdcxx library are two other popular
908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      candidates, but both lack C++'0x support.  Our experience (and the
918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      experience of libstdc++ developers) is that adding support for C++0x (in
928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      particular rvalue references and move-only types) requires changes to
938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      almost every class and function, essentially amounting to a rewrite.
948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      Faced with a rewrite, we decided to start from scratch and evaluate every
958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      design decision from first principles based on experience.</p>
961f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
971f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt      <p>Further, both projects are apparently abandoned: STLport 5.2.1 was
988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      released in Oct'08, and STDCXX 4.2.1 in May'08.</p>
998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    </ul>
1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <h2 id="requirements">Platform Support</h2>
1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt   <p>libc++ is known to work on the following platforms, using g++-4.2 and
1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      clang (lack of C++0X language support disables some functionality).</p>
1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <ul>
1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     <li>Mac OS X i386</li>
1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     <li>Mac OS X x86_64</li>
1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    </ul>
1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <h2 id="dir-structure">Current Status</h2>
1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt   <p>libc++ is still under development.  It has about 98% of
1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3126.pdf">N3126</a>
1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      implemented/tested.  C++'98 support is fully featured, and most of C++'0x
1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      support is as well.  The only major missing piece of C++'0x support is
1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt      <code>&lt;atomic&gt;</code>.</p>
1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt   <p><a href="libcxx_by_chapter.pdf">Here</a> is a by-chapter breakdown of what
1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt   is passing tests and what isn't. This chart is currently based on testing
1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt   against g++-4.4.0 with -std=c++0x. </p>
1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <h2>Get it and get involved!</h2>
1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>To check out the code, use:</p>
1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <ul>
1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <li><code>svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx</code></li>
1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </ul>
1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>To build on Mac OS X 10.6, you need a helper library and header 
1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <a href="http://home.roadrunner.com/~hinnant/libcppabi.zip">found here</a>.
1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    cp cxxabi.h to /usr/include, and cp libc++abi.dylib to /usr/lib.
141fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt    <p>
142fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt    
143fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt  <p>
1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     Next:
1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </p>
1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  
1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <ul>
1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>cd libcxx/lib</code></li>
1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>export TRIPLE=-apple-</code></li>
1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>/buildit</code></li>
1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </ul>
1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  
1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>
15461d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt     That should result in a libc++.1.dylib.  To install it I like to use links
1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     instead of copying, but either should work:
1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </p>
1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <ul>
1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>cd /usr/lib</code></li>
1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>sudo ln -sf path-to-libcxx/lib/libc++.1.dylib libc++.1.dylib</code></li>
1618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>sudo ln -sf libc++.1.dylib libc++.dylib</code></li>
1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>cd /usr/include/c++</code></li>
1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    <li><code>sudo ln -sf path-to-libcxx/include v1</code></li>
1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </ul>
1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>
16761d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt  To use with clang you can:
16861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt  </p>
16961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt
17061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt  <ul>
17161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt    <li><code>clang++ -stdlib=libc++ test.cpp</code></li>
17261d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt    <li><code>clang++ -std=c++0x -stdlib=libc++ test.cpp</code></li>
1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </ul>
1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>To run the libc++ test suit (recommended):</p>
1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <ul>
1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <li><code>cd libcxx/test</code></li>
1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <li><code>/testit</code></li>
1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     <ul>
1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt       <li>On Mac OS 10.6, to work around bugs in libc headers like
1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt           math.h and inttypes.h, add "-U__STRICT_ANSI__" and
1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt           "-D__STDC_FORMAT_MACROS" to the command line with:
1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt           <blockquote>
1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt             <pre>export OPTIONS="-std=c++0x -stdlib=libc++ -U__STRICT_ANSI__ -D__STDC_FORMAT_MACROS"</pre>
1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt           </blockquote></li>
1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt       <li>People porting libc++ to other OSes will likely have to
1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt           define similar macros.</li>
1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt     </ul>
1908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  </ul>
1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <p>Send discussions to the
1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  (<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">clang mailing list</a>).</p>
1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <h2>Design Documents</h2>
1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt  <!--=====================================================================-->
1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt<ul>
2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt<li><a href="atomic_design.html"><tt>&lt;atomic&gt;</tt></a></li>
201f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt<li><a href="type_traits_design.html"><tt>&lt;type_traits&gt;</tt></a></li>
202f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt</ul>
203f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
204f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt</div>
2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt</body>
2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt</html>
2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt