Artifact dee626b9d13243926eda077c7dbd9a236a84a7ef:

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