By trying to reuse the existing std::_Construct function as a wrapper for std::construct_at I introduced regressions, because changing std::_Construct to return non-void made it ill-formed for array types. The solution is to revert _Construct to its former state, and change allocator_traits::construct to explicitly call construct_at instead. This decouples all the existing callers of _Construct from the new construct_at requirements. PR libstdc++/94831 * include/bits/alloc_traits.h (_S_construct): Restore placement new-expression for C++11/14/17 and call std::construct_at directly for C++20. * include/bits/stl_construct.h (_Construct): Revert to non-constexpr function returning void. * testsuite/20_util/specialized_algorithms/ uninitialized_value_construct/94831.cc: New test. * testsuite/23_containers/vector/cons/94831.cc: New test.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| 1.cc | Loading commit data... | |
| 2.cc | Loading commit data... | |
| 3.cc | Loading commit data... | |
| 4.cc | Loading commit data... | |
| 55977.cc | Loading commit data... | |
| 6513.cc | Loading commit data... | |
| 86292.cc | Loading commit data... | |
| 87809.cc | Loading commit data... | |
| 89164.cc | Loading commit data... | |
| 89164_c++17.cc | Loading commit data... | |
| 94831.cc | Loading commit data... | |
| clear_allocator.cc | Loading commit data... | |
| cons_size.cc | Loading commit data... | |
| deduction.cc | Loading commit data... | |
| destructible_debug_neg.cc | Loading commit data... | |
| destructible_neg.cc | Loading commit data... | |
| moveable.cc | Loading commit data... | |
| moveable2.cc | Loading commit data... | |
| noexcept_move_construct.cc | Loading commit data... |