Artifact 23ccebb2ffc8061d767fd8753056e454eecbe8920b9e303fc2474942863babd4:

Wiki page [Implementation Status] by luismachuca 2018-11-13 02:40:58.
D 2018-11-13T02:40:58.959
L Implementation\sStatus
P 7b8a3d01307cba13c3b9bdb5301e41dd9d16c784e87c832853899f2c43d6849b
U luismachuca
W 6682
This page lists the features in the C++ Standard that are backported or emulated by the cxxomfort library, as well as the submitted Proposals (<code>nxxxx</code>, <code>pxxxry</code>) that "didn't make it" but are still brought to the library as supplementals.

<em>Last Updated Nov 2018</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.

In the cxxomfort code, the files implementing such features are identified by a list of all the features as well as the implementation status can be found by using the following command to find all macros of the form <code>CXXOMFORT_IMPLEMENTS_</code>:

<verbatim>
# First version: lists only nxxxx and pxxxxry codes:
egrep -hEro  'CXXOMFORT_IMPLEMENTS_[nlp][0-9][a-z0-9_]+' | sort | uniq
# Second version: lists the codes, and the names describing the features:
egrep -hEro  'CXXOMFORT_IMPLEMENTS_[a-z0-9_]+' | sort | uniq
</verbatim>

(yes, the "hero" is intentional)

For comparison, the listing of all proposals ever is found at  https://wg21.link/index.txt .

<h2>C++11 features</h2>

  *  [https://wg21.link/n1488] , [https://wg21.link/n1601] : A name for the Null pointer constant. (Standard's recommended Backport) (See [Features])
  *  [https://wg21.link/n1377], [https://wg21.link/n2118] : Rvalue Reference proposal (Emulation).
  *  [https://wg21.link/n1381], [https://wg21.link/n1604], [https://wg21.link/n1720] : <code>static_assert</code> (Emulation) (See [Features]).
  *  [https://wg21.link/n1978], [https://wg21.link/n2343] : <code>decltype</code>.
  *  [https://wg21.link/n1990] : Proposed wording for minmax (Backport).
  *  [https://wg21.link/n2069] : <code>std::decay</code> (Emulation).
  *  [https://wg21.link/n2240] : <code>enable_if</code> and <code>conditional</code> (Backport)
  *  [https://wg21.link/n2243], [https://wg21.link/n2930] "Range-Based <code>for</code> Loop wording" (Emulation) (See [Features/Foreach]).
  *  [https://wg21.link/n2333], [https://wg21.link/n2437] : explicit conversion operators (Emulation) (See<code>[Features/explicit_cast|explicit_cast]</code>).
  *  [https://wg21.link/n2543] : Singly-linked list <code>forward_list</code> (Backport).
  *  [https://wg21.link/n2569] : from <code><algorithm></code>: any, all, none algorithms; lexicographical compare 3-way.
  *  [https://wg21.link/n2984] (issue 1055) : <code>underlying_type</code> (Emulation).
  *  Nonmember iterator helpers <code>begin</code> and <code>end</code> (Backport).
  *  <code>unique_ptr</code> (Backport) (Adapted from Howard Hinnart's implementation).
  *  Allocator traits (Emulation).
  *  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>

  *  [https://wg21.link/n3421] : [Features/TransparentFunctors|Heterogeneous / 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>).
  *  [https://wg21.link/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>]).
  *  [https://wg21.link/n3588] : <code>make_unique</code> for <code>unique_ptr</code>.
  *  [https://wg21.link/n3658] : Compile-time integer sequences: <code>integer_sequence</code> (Backport) (for C++11 only).
  *  [https://wg21.link/n3668] : <code>exchange</code> (Backport).
  *  [https://wg21.link/n3671] - improved algorithm overloads for equal, mismatch.


<h2>C++17 features</h2>

  *  [https://wg21.link/n3829] : <code>apply</code> - call a function with arguments from a tuple (Emulation).
  *  [https://wg21.link/n3911] - Transformation trait <code>make_void</code>, <code>void_t</code>. (Emulation) ([http://en.cppreference.com/w/cpp/types/void_t|cppreference])
  *  [https://wg21.link/n4017], n4155 : Nonmember <code>size</code>.
  *  [https://wg21.link/n4334] : Wording for <code>bool_constant</code> (Backport).
  *  [https://wg21.link/n4380] : <code>as_const</code> (Backport).
  *  [https://wg21.link/p0040r1], p0040r2 : Extensions to memory management: <code>destroy_at</code> and allies (Backport).
  *  [https://wg21.link/p0298r2], [https://wg21.link/p0298r3] : <code>std::byte</code>, independent type representation for C++'s byte (Backport) (See [Features/std::byte])
  *  <code>make_from_tuple</code> (Backport).

<h2>C++20 features</h2>

  *  [https://wg21.link/p00463] : <code>std::endian</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 also [Features/Extras]):

  *  [https://wg21.link/n2648] : Dynamically allocated array <code>[Features/Extras/dynarray|dynarray]</code>.
  *  [https://wg21.link/n3334] : <code>[Features/Extras#cxxo-array_ref|array_ref]<T></code>
  *  [https://wg21.link/n3500] : New <code>assert</code> variants.
  *  n3824, n4031: <code>make_array</code>.
  *  [https://wg21.link/n3840] : The world's dumbest smart pointer: <code>observer_ptr</code> (in std::experimental as of 2018) (Backport)
  *  n4391 : <code>make_array</code> (Emulation).
  *  [https://wg21.link/p0117r0 ]: Variadic <code>to_string</code> (See [IndependentFeatures], <string>).
  *  [????] Nonmember <code>cbegin</code>, <code>cend</code> complements to <code>begin/end</code>.

<h2>Left for associate libraries to handle</h2>

  *  ???? : Nullable object type: <code>optional<T></code>. See [Extras|cxxo::optional].
  *  ???? : Variant object type: <code>variant<...></code>. See [Extras|cxxo::variant].
  *  ????: User-defined literals. See [Extras|cxxo::literal_affixes] ([https://notabug.org/lmachucabezzaza/cxxo-literal_affixes]).
  *  n3335 : <code>range<T></code> proposal. See [Extras|cxxo::minrange].

<hr/>

  *  Check the [Features|Listing of Features].
  *  Back to [Cxxomfort|the beginning].

Z 0b1c988ecd45fec69ff139212e06535c