Utilities & type traits (C++20)
remove_cvref, bind_front, identity, unwrap_reference, is_bounded_array, layout-compatibility traits, variant/optional fixes.
Connected features
Papers
20 · Albuquerque 2017 → Cologne 2019Adds remove_cvref.
Removes unnecessary decay uses in the library.
Forbids specializing standard function templates.
Adds is_nothrow_convertible.
Adds std::type_identity.
Fixes is_abstract/is_constructible for abstract class types.
Removes unnecessarily explicit default constructors from the library.
Adds unwrap_reference and unwrap_ref_decay.
Adds std::bind_front.
Allows reference_wrapper of incomplete types.
Makes variant and optional propagate copy/move triviality.
Sanitizes variant's converting constructor (no narrowing).
Adds visit<R>.
Makes std::function's move constructor noexcept.
Declares LWG 3016 not a defect and adjusts wording.
Improves the completeness requirements for type traits.
Makes underlying_type SFINAE-friendly.
Adds is_bounded_array and is_unbounded_array.
Adds is_layout_compatible, is_pointer_interconvertible_base_of and related functions.
Makes bind_front not unwrap reference_wrapper.