Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Updates since the last version.
numeric_limits<>
Internal::numeric_limits_base
isnan
to EASTL when compiled with C++20is_constant_evaluated
midpoint
to behave correctly when passed NaNsarray<T, N>::operator[]
.fixed_vector
move constructor with an explicit allocator parameter. It now works with move-only types.bit_and
,bit_or
,bit_xor
,bit_not
andowner_less<void>
function objects.string_view
andstring
.span
is now specialized for static extents so that it doesn't need to store the size at runtime.emplace
,emplace_hint
, ortry_emplace
on astring_hash_map
would call the underlyinghash_map
implementation, which caused a crash whenstring_hash_map
would try to free memory it didn't own.CharTypeStringSearch/Find
functions inchar_traits.h
.CharTypeStringRSearch
to reduce iteration loop count.deque
move assignment operator for move only and non-default constructible types.and_then
,transform
andor_else
foroptional
.value_or
for r-value refs tooptional
.bitset
fixes and improvements:bitset(uint32_t)
withbitset(unsigned long long)
which matches the standard and means that 64 bit integers can be correctly converted to a bitset. As a resultfrom_uint32()
andfrom_uint64()
are now unnecessary (not deprecated).to_ulong_checked()
with the same behaviour as the standard, ie. throws or asserts if the target type cannot represent all the set bits.as_uint<T>()
/as_ulong()
, cast to a unsigned integral that can represent the entire bitset. If the target type cannot represent the entire bitset, then issue a compile error (overload does not exist).sizeof(word_type) == EA_PLATFORM_WORD_SIZE
. eg.from_uint64()
previously would not copy the entire value into abitset<N, uint32_t>
forN > 32
.unsigned long
orunsigned long long
where the type is notuint64_t
.get<T>(pair<T1, T2>)
. Makeget<I>(pair<T1, T2>)
constexpr.get_if()
,get()
,holds_alternative()
and converting constructor and assignment so that they only conditionally compile when the index or type unambiguously refers to a variant alternative.any::emplace()
now returns a reference.lru_cache::emplace()
now compiles correctly, forwarding its arguments and returns an pair of iterator and bool indiciating emplace success.-Wdeprecated-copy-with-user-provided-copy
, which manifests for the following reasons:class
is deprecated because it has a user-provided copy constructorclass
is deprecated because it has a user-provided copy assignment operatorsegmented_vector
:clear()
now behaves like othereastl
containers in that it does not free memory when called, the container maintains it's capacity.segmented_vector
now supports types which are not default constructible.reserve
,resize
,shrink_to_fit
,emplace_back
.map
,set
,hash_set
,hash_map
that take aninitializer_list
and Allocator.shell_sort()
algorithm.deque
,list
,slists
's member functionsemplace_front()
,emplace_back()
andunique()
.slist::unique()
function.make_pair_ref()
, usemake_pair()
instead. Also deprecate amake_pair()
overload which was only enabled on MSVC.stack::emplace_back()
,use stack::emplace()
instead.vector_map<Key, T>::at(index)
. this function was accidentally inherited fromvector
with incorrect semantics.find_first()
,find_next()
,find_last()
,find_prev()
(which are extensions to the standard).bitset<N, eastl_uint128_t>::find_last()
.erase_unordered
anderase_unordered_if
forvector
anddeque
(fixed_vector
works implicitly with thevector
version since it is avector
with a special allocator and these functions don't affect capacity). Thesework similar to free function
erase
/erase_if
but are more efficient if those would result in moving a lot ofelements. They achieve this by not respecting the order of the remaining element and just moving the elements from
the end into the now empty spots.
optional::emplace
now correctly returnsT&
instead ofvoid
as specified in the standard.function::target
not compiling due to missing template parameter when we called into the base class' member function.