diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2023-07-04 16:03:45 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2023-07-05 07:39:04 +0100 |
commit | 83cae6c4b788544635a71748e1881c150f42efef (patch) | |
tree | 7ba55e97c7939719a3b48e777250445af141c88a | |
parent | 4870a18ac2d5e0bd8515ea473006071e65622e52 (diff) | |
download | gcc-83cae6c4b788544635a71748e1881c150f42efef.zip gcc-83cae6c4b788544635a71748e1881c150f42efef.tar.gz gcc-83cae6c4b788544635a71748e1881c150f42efef.tar.bz2 |
libstdc++: Fix std::__uninitialized_default_n for constant evaluation [PR110542]
libstdc++-v3/ChangeLog:
PR libstdc++/110542
* include/bits/stl_uninitialized.h (__uninitialized_default_n):
Do not use std::fill_n during constant evaluation.
-rw-r--r-- | libstdc++-v3/include/bits/stl_uninitialized.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h index 6752c6b..be7b4afd 100644 --- a/libstdc++-v3/include/bits/stl_uninitialized.h +++ b/libstdc++-v3/include/bits/stl_uninitialized.h @@ -695,6 +695,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline _ForwardIterator __uninitialized_default_n(_ForwardIterator __first, _Size __n) { +#ifdef __cpp_lib_is_constant_evaluated + if (std::is_constant_evaluated()) + return __uninitialized_default_n_1<false>:: + __uninit_default_n(__first, __n); +#endif + typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; // See uninitialized_fill_n for the conditions for using std::fill_n. |