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 (nxxxx, pxxxry) that "didn't make it" but are still brought to the library as supplementals. Last Updated Nov 2018. * Each feature is identified by its common description (eg.: "get for tuples") or by the proposal document that was used to source the implementation in the form of "nxxxx" (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 cppreference 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 CXXOMFORT_IMPLEMENTS_: # 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 (yes, the "hero" is intentional) For comparison, the listing of all proposals ever is found at https://wg21.link/index.txt .

C++11 features

* [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] : static_assert (Emulation) (See [Features]). * [https://wg21.link/n1978], [https://wg21.link/n2343] : decltype. * [https://wg21.link/n1990] : Proposed wording for minmax (Backport). * [https://wg21.link/n2069] : std::decay (Emulation). * [https://wg21.link/n2240] : enable_if and conditional (Backport) * [https://wg21.link/n2243], [https://wg21.link/n2930] "Range-Based for Loop wording" (Emulation) (See [Features/Foreach]). * [https://wg21.link/n2333], [https://wg21.link/n2437] : explicit conversion operators (Emulation) (See[Features/explicit_cast|explicit_cast]). * [https://wg21.link/n2543] : Singly-linked list forward_list (Backport). * [https://wg21.link/n2569] : from : any, all, none algorithms; lexicographical compare 3-way. * [https://wg21.link/n2984] (issue 1055) : underlying_type (Emulation). * Nonmember iterator helpers begin and end (Backport). * unique_ptr (Backport) (Adapted from Howard Hinnart's implementation). * Allocator traits (Emulation). * New auto 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.

C++14 features

* [https://wg21.link/n3421] : [Features/TransparentFunctors|Heterogeneous / Type-transparent functors] for (Backport) ([http://en.cppreference.com/w/cpp/utility/functional/plus_void|cppreference] example documentation for std::plus). * [https://wg21.link/n3584], n3670 : get(tuple<...>) 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]). * [https://wg21.link/n3588] : make_unique for unique_ptr. * [https://wg21.link/n3658] : Compile-time integer sequences: integer_sequence (Backport) (for C++11 only). * [https://wg21.link/n3668] : exchange (Backport). * [https://wg21.link/n3671] - improved algorithm overloads for equal, mismatch.

C++17 features

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

C++20 features

* [https://wg21.link/p00463] : std::endian (Backport).

C++ Proposals

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

Left for associate libraries to handle

* ???? : Nullable object type: optional. See [Extras|cxxo::optional]. * ???? : Variant object type: variant<...>. See [Extras|cxxo::variant]. * ????: User-defined literals. See [Extras|cxxo::literal_affixes] ([https://notabug.org/lmachucabezzaza/cxxo-literal_affixes]). * n3335 : range proposal. See [Extras|cxxo::minrange].
* Check the [Features|Listing of Features]. * Back to [Cxxomfort|the beginning]. Z 0b1c988ecd45fec69ff139212e06535c