[gcc r12-6260] libstdc++: Simplify std::allocator_traits<allocator<void>>::construct

Jonathan Wakely redi@gcc.gnu.org
Wed Jan 5 13:47:48 GMT 2022


https://gcc.gnu.org/g:917c7b136e8b556b0027223058006a6caeb56871

commit r12-6260-g917c7b136e8b556b0027223058006a6caeb56871
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jan 4 16:39:01 2022 +0000

    libstdc++: Simplify std::allocator_traits<allocator<void>>::construct
    
    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.

Diff:
---
 libstdc++-v3/include/bits/alloc_traits.h | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/bits/alloc_traits.h b/libstdc++-v3/include/bits/alloc_traits.h
index f51049f4a51..fa93feb7198 100644
--- a/libstdc++-v3/include/bits/alloc_traits.h
+++ b/libstdc++-v3/include/bits/alloc_traits.h
@@ -632,13 +632,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	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`


More information about the Gcc-cvs mailing list