libstdc++: Fix typo in std::fill SFINAE constraint [PR93059]
The r15-4321-gd8ef4471cb9c9f change incorrectly used __value as the member of the __memcpyable_integer trait, but it should have been __width. That meant this overload was not being used for _Tp != _Up. Also return after doing the loop for the consteval case. The missing return wasn't causing incorrect behaviour because the consteval loop increments the iterator until it equals the end of the range, so the memset isn't done. But it's still better to return and not even try to do the memset. libstdc++-v3/ChangeLog: PR libstdc++/93059 * include/bits/stl_algobase.h (__fill_a1): Fix typo in SFINAE constraint.
This commit is contained in:
parent
892ee5ffba
commit
2256e30874
1 changed files with 2 additions and 1 deletions
|
@ -943,7 +943,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
|
|||
inline typename
|
||||
__gnu_cxx::__enable_if<__is_byte<_Up>::__value
|
||||
&& (__are_same<_Up, _Tp>::__value // for std::byte
|
||||
|| __memcpyable_integer<_Tp>::__value),
|
||||
|| __memcpyable_integer<_Tp>::__width),
|
||||
void>::__type
|
||||
__fill_a1(_Up* __first, _Up* __last, const _Tp& __x)
|
||||
{
|
||||
|
@ -955,6 +955,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
|
|||
{
|
||||
for (; __first != __last; ++__first)
|
||||
*__first = __val;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (const size_t __len = __last - __first)
|
||||
|
|
Loading…
Add table
Reference in a new issue