Skip to content

3.18.00

Compare
Choose a tag to compare
@liam-mitchell liam-mitchell released this 20 Oct 23:42
· 68 commits to master since this release

Welcome to the 3.18.00 release of EASTL. Thank you to everyone who's contributed to this release.

Feature additions and standard updates:

  • Implemented eastl::bit_cast.
  • Implemented eastl::is_nothrow_invocable.
  • Implemented eastl::to_underlying.
  • Implemented LWG defect 2106: move_iterator doesn't work with iterators which don't return a reference

Bugfixes:

  • eastl::invoke fixes:

    • invoke now correctly deduces the function signature when invoking a member function or member data pointer on a reference_wrapper.
      Previously, this would fail if using arguments which were convertible to the correct type, but did not exactly match.
    • invoke now correctly forwards arguments when invoking a member data pointer.
    • invoke now correctly uses decay_t instead of remove_reference_t in a number of places.
    • invoke_result_t no longer uses decay_t on the type being invoked.
    • invoke is now constexpr.
  • eastl::variant fixes:

    • Fixed incorrect results from some relational operators when valueless_by_exception() is true.
    • Fixed incorrect index when an exception is thrown during emplace().
  • Removed assertions from some eastl::array functions in order to ensure usability in constexpr contexts.

  • eastl::make_signed and eastl::make_unsigned now work correctly for enum types and volatile-qualified types.

  • Containers which support find_as now support using it with keys of the same type as the container's key.

  • Disallowed use of smart pointer default deleter on incomplete types.

  • Fixed an issue where nodes for some data structures could be under-aligned.

  • Properly supported arrays in eastl::cbegin() and eastl::cend().

  • Fixed creation of zero-length spans and subspans.

  • eastl::is_reference now returns true for rvalue references.

  • Fixed a potential out-of-bounds memory access when sorting certain containers.

Optimizations:

  • eastl::variant optimizations:
    • Avoided unnecessary double index checks in variant relational operators.
    • Avoided unnecessary work in valueless_by_exception() when exceptions are disabled.
    • Optimized visit() for the common case of visiting a single variant.
    • Removed unnecessary copies during visit().