We don't need a preprocessor condition to decide whether to use
placement new or std::construct_at, because std::_Construct already does
that.
libstdc++-v3/ChangeLog:
* include/bits/alloc_traits.h (allocator_traits<allocator<void>>):
Use std::_Construct for construct.
(cherry picked from commit
917c7b136e8b556b0027223058006a6caeb56871)
static _GLIBCXX20_CONSTEXPR void
construct(allocator_type&, _Up* __p, _Args&&... __args)
noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
- {
-#if __cplusplus <= 201703L
- ::new((void *)__p) _Up(std::forward<_Args>(__args)...);
-#else
- std::construct_at(__p, std::forward<_Args>(__args)...);
-#endif
- }
+ { std::_Construct(__p, std::forward<_Args>(__args)...); }
/**
* @brief Destroy an object of type `_Up`