llvm-project/libcxx/www/ts1z_status.html

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

109 lines
5.0 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>libc++ Fundamentals TS Status</title>
<link type="text/css" rel="stylesheet" href="menu.css">
<link type="text/css" rel="stylesheet" href="content.css">
</head>
<body>
<div id="menu">
<div>
<a href="https://llvm.org/">LLVM Home</a>
</div>
<div class="submenu">
<label>libc++ Info</label>
<a href="/index.html">About</a>
</div>
<div class="submenu">
<label>Quick Links</label>
<a href="https://lists.llvm.org/mailman/listinfo/cfe-dev">cfe-dev</a>
<a href="https://lists.llvm.org/mailman/listinfo/cfe-commits">cfe-commits</a>
<a href="https://bugs.llvm.org/">Bug Reports</a>
<a href="https://github.com/llvm/llvm-project/tree/master/libcxx/">Browse Sources</a>
</div>
</div>
<div id="content">
<!--*********************************************************************-->
<h1>Post-C++14 TS Implementation Status</h1>
<!--*********************************************************************-->
<p>In November 2014, the C++ standard committee approved the draft for the next version of the C++ standard, known as "C++1z" (probably to be C++17)</p>
<p>In addition, there are several "Technical Specifications", that consist of new features that are proposed, but not yet accepted for C++1z.</p>
<p>This page shows the status of libc++; the status of clang's support of the language features is <a href="https://clang.llvm.org/cxx_status.html">here</a>.</p>
<h3>Technical Specifications</h3>
<table id="TS" border="1">
<tr><th>Paper Number</th><th>Paper Title</th><th>TS</th></tr>
<tr><td><a href="https://wg21.link/n4023">4023</a></td><td>C++ Extensions for Library Fundamentals</td><td>Library Fundamentals 1</td></tr>
<tr><td><a href="https://wg21.link/n3940">3940</a></td><td>Technical Specification - File System</td><td>File System</td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td><a href="https://wg21.link/n4273">4273</a></td><td>Uniform Container Erasure.</td><td>Library Fundamentals 2</td></tr>
<tr><td><a href="https://wg21.link/n4061">4061</a></td><td>Greatest Common Divisor and Least Common Multiple.</td><td>Library Fundamentals 2</td></tr>
<tr><td><a href="https://wg21.link/n4257">4257</a></td><td>Delimited iterators.</td><td>Library Fundamentals 2</td></tr>
<tr><td><a href="https://wg21.link/n4282">4282</a></td><td>The World's Dumbest Smart Pointer.</td><td>Library Fundamentals 2</td></tr>
<tr><td></td><td></td><td></td></tr>
</table>
<h3>Features in Library Fundamentals 1</h3>
<table id="Features" border="1">
<tr><th>Feature Name</th><th>Status</th></tr>
<tr><td>Uses-allocator construction</td><td>Not started</td></tr>
<tr><td>Changes to std::shared_ptr and weak_ptr</td><td>Not started</td></tr>
<tr><td>Additions to std::function</td><td>Not started</td></tr>
<tr><td>Additions to std::promise</td><td>Not started</td></tr>
<tr><td>Additions to std::packaged_task</td><td>Not started</td></tr>
<tr><td></td><td></td></tr>
<tr><td>Class erased_type</td><td>Complete</td></tr>
[libcxx] Add <experimental/tuple> header for LFTS. Summary: This patch adds the `<experimental/tuple>` header (almost) as specified in the latest draft of the library fundamentals TS. The main changes in this patch are: 1. Added variable template `tuple_size_v` 2. Added function `apply(Func &&, Tuple &&)`. 3. Changed `__invoke` to be `_LIBCPP_CONSTEXPR_AFTER_CXX11`. The `apply(...)` implementation uses `__invoke` to invoke the given function. `__invoke` already provides the required functionality. Using `__invoke` also allows `apply` to be used on pointers to member function/objects as an extension. In order to facilitate this `__invoke` has to be marked `constexpr`. Test Plan: Each new feature was tested. The test cases for `tuple_size_v` are as follows: 1. tuple_size_v.pass.cpp - Check `tuple_size_v` on cv qualified tuples, pairs and arrays. 2. tuple_size_v.fail.cpp - Test on reference type. 3. tuple_size_v_2.fail.cpp - Test on non-tuple 4. tuple_size_v_3.fail.cpp - Test on pointer type. The test cases for tuple.apply are as follows: 1. arg_type.pass.cpp - Ensure that ref/pointer/cv qualified types are properly passed. 2. constexpr_types.pass.cpp - Ensure constexpr evaluation of apply is possible for `tuple` and `pair`. 3. extended_types.pass.cpp - Test apply on function types permitted by extension. 4. large_arity.pass.cpp - Test that apply can evaluated on tuples and arrays with large sizes. 5. ref_qualifiers.pass.cpp - Test that apply respects ref qualified functions. 6. return_type.pass.cpp - Test that apply returns the proper type. 7. types.pass.cpp - Test apply on function types as required by LFTS. Reviewers: mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4512 llvm-svn: 232515
2015-03-18 02:28:14 +08:00
<tr><td>Calling a function with a tuple of arguments</td><td>Complete</td></tr>
<tr><td>Type traits (_v)</td><td>Complete</td></tr>
<tr><td>Other type transformations</td><td>Not started</td></tr>
<tr><td>Compile-time Rational Arithmetic</td><td>Implementation in progress</td></tr>
<tr><td>Time Utilities</td><td>Complete</td></tr>
<tr><td>System Error Support</td><td>Complete</td></tr>
<tr><td></td><td></td></tr>
<tr><td>Class memory_resource</td><td>Complete</td></tr>
<tr><td>Class template polymorphic_allocator</td><td>Complete</td></tr>
<tr><td>Template alias resource_adaptor</td><td>Complete</td></tr>
<tr><td>Global memory resources</td><td>Complete</td></tr>
<tr><td>Pool resource classes</td><td>Implementation in progress</td></tr>
<tr><td>Class monotonic_buffer_resource</td><td>Implementation in progress</td></tr>
<tr><td>Alias templates using polymorphic memory resource</td><td>Complete</td></tr>
<tr><td></td><td></td></tr>
<tr><td>Searchers</td><td>Complete</td></tr>
<tr><td>Optional Objects</td><td>Initial implementation complete</td></tr>
<tr><td>class any</td><td>Complete</td></tr>
<tr><td>string_view</td><td>Complete</td></tr>
<tr><td>memory</td><td>Implementation in progress</td></tr>
<tr><td>Algorithms library</td><td>Complete</td></tr>
</table>
<h3>Features in Library Fundamentals 2</h3>
<table id="Features" border="1">
<tr><th>Feature Name</th><th>Status</th></tr>
<!-- <tr><td></td><td></td></tr> -->
</table>
<h3>Features in Filesystem</h3>
<table id="Features" border="1">
<tr><th>Feature Name</th><th>Status</th><th>First released version</th></tr>
<tr><td>All features</td><td>Complete</td><td>3.9</td></tr>
</table>
<p>Last Updated: 17-June-2016</p>
</div>
</body>
</html>