Wiki page
[Implementation Status] by
luismachuca
2017-12-24 21:23:43.
D 2017-12-24T21:23:43.351
L Implementation\sStatus
P e3703d0ed465af19c36bafab3cda49ceaefea26a
U luismachuca
W 5067
List of C++ Standard features backported or emulated by the cxxomfort library.
<em>Last Updated Dec 2017</em>.
* Each feature is identified by its common description (eg.: "<code>get<type></code> for tuples") or by the proposal document that was used to source the implementation in the form of "n<em>xxxx</em>" (if possible with a link to the document in question).
* The implementation status of some features are indicated in parenthesis - "Backport" or "Emulation".
* Some of the elements are also linked to external implementation or documentation pages such as the ones in the <b>cppreference</b> wiki.
<h2>C++11 features</h2>
(to be completed)
* n1488, [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf|n1601] Null pointer constant. (Standard's recommended Backport) (See [Features])
* [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1604.html|n1604], [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html|n1720] <code>static_assert</code> (Emulation) (See [Features]).
* n1978, n2343: <code>decltype</code>.
* n2240: <code>enable_if</code> and <code>conditional</code>.
* n2243, [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html|n2930] "Range-Based <code>for</code> Loop wording" (Emulation) (See [Features/Foreach]).
* n2333, n2437: explicit conversion operators (Emulation) (See<code>[Features/explicit_cast|explicit_cast]</code>).
* n2569: from <code><algorithm></code>: any, all, none algorithms; lexicographical compare 3-way.
* Nonmember iterator helpers <code>begin</code> and <code>end</code>.
* <code>unique_ptr</code> (Adapted from Howard Hinnart's implementation).
* Allocator traits (Emulation).
* Singly-linked list <code>forward_list</code>.
* New <code>auto</code> semantics (Emulation).
* Local classes as arguments to templated function calls. (Emulation) (See [Features/Extras#cxxo-localfn|Extras]).
* Brace-list initialization syntax for containers. (Emulation) (See [Features/SequencesInitialization]).
* ...among others.
<h2>C++14 features</h2>
* [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3421.htm|n3421]: [Features/TransparentFunctors|Type-transparent functors] for <code><functional></code> (Backport) ([http://en.cppreference.com/w/cpp/utility/functional/plus_void|cppreference] example documentation for <code>std::plus<void></code>).
* [http://isocpp.org/files/papers/n3584.html|n3584], n3670: <code>get<type>(tuple<...>)</code> to get tuple elements by type (Backport) ([http://en.cppreference.com/w/cpp/utility/tuple/get|cppreference] for std::get - see cases #5-#8) ([Features/tuple_get<type>]).
* n3588: <code>make_unique</code> for <code>unique_ptr</code>.
* n3658: <code>integer_sequence</code> (Backport).
* n3668: <code>exchange</code> (Backport).
* n3671 - improved algorithm overloads for equal, mismatch.
<h2>C++17 features</h2>
* n3840, n4282 - <code>observer_ptr</code>, "the world's dumbest smart pointer" ([http://en.cppreference.com/w/cpp/experimental/observer_ptr|cppreference]) (Backport).
* n3911 - <code>make_void</code>, <code>void_t</code>. (Emulation) ([http://en.cppreference.com/w/cpp/types/void_t|cppreference])
* n4380: <code>as_const</code>.
* n4391 - <code>make_array</code> (Emulation).
* <code>std::byte</code>, independent type representation for C++'s byte (Backport) (See [Features/std::byte])
* <code>apply</code> for tuples (Emulation).
* <code>make_from_tuple</code> (Backport).
<h2>C++ Proposals</h2>
Proposals for C++11 / C++14 that are not yet made into the Standard but are offered by cxxomfort (See [Features/Extras]):
* n1878, [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3527.html|n3527]: Nullable object wrapper <code>[Features/Extras/optional|optional]<T></code>.
* n2648: Dynamically allocated array <code>[Features/Extras/dynarray|dynarray]</code>.
* [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3334.html|n3334]: <code>[Features/Extras#cxxo-array_ref|array_ref]<T></code>
* n335: <code>range<T></code> proposal.
* n3824, n4031: <code>make_array</code>.
* n4017, n4155: Nonmember <code>size</code>.
* Nonmember <code>cbegin</code>, <code>cend</code> complements to <code>begin/end</code>.
* [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3500.htm|n3500] New <code>assert</code> variants.
* n3802 ([http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3802.pdf|pdf]), [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3829.pdf|n3829]: call a function with an unpacked <code>tuple<...></code> as arguments.
* [http://open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0117r0.html|p0117r0]: Variadic <code>to_string</code> (See [IndependentFeatures], <string>).
<h2>Future</h2>
Proposals that might be implemented by cxxomfort in the future:
* ????
<hr/>
* Check the [Features|Listing of Features].
* Back to [Cxxomfort|the beginning].
Z c0945d131411f924a55a5131e7c87e37