From deabcdde1eb8073403ea3f8fa98a476adb6548aa Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Fri, 22 May 2026 15:08:32 +0800 Subject: [PATCH 1/3] atomic: remove consume / add acq_rel wrapper --- include/boost/lockfree/detail/atomic.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/lockfree/detail/atomic.hpp b/include/boost/lockfree/detail/atomic.hpp index ebc07d6..767dcbe 100644 --- a/include/boost/lockfree/detail/atomic.hpp +++ b/include/boost/lockfree/detail/atomic.hpp @@ -18,22 +18,22 @@ namespace detail { #if defined( BOOST_LOCKFREE_FORCE_BOOST_ATOMIC ) using boost::atomic; +using boost::memory_order_acq_rel; using boost::memory_order_acquire; -using boost::memory_order_consume; using boost::memory_order_relaxed; using boost::memory_order_release; #else using std::atomic; +using std::memory_order_acq_rel; using std::memory_order_acquire; -using std::memory_order_consume; using std::memory_order_relaxed; using std::memory_order_release; #endif } // namespace detail using detail::atomic; +using detail::memory_order_acq_rel; using detail::memory_order_acquire; -using detail::memory_order_consume; using detail::memory_order_relaxed; using detail::memory_order_release; From e3ed20e04aeaaf5794a539913772b155549663ce Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Fri, 22 May 2026 15:25:12 +0800 Subject: [PATCH 2/3] stack/spsc_queue - don't include copy_payload --- include/boost/lockfree/spsc_queue.hpp | 1 - include/boost/lockfree/stack.hpp | 1 - 2 files changed, 2 deletions(-) diff --git a/include/boost/lockfree/spsc_queue.hpp b/include/boost/lockfree/spsc_queue.hpp index 2205026..136e7af 100644 --- a/include/boost/lockfree/spsc_queue.hpp +++ b/include/boost/lockfree/spsc_queue.hpp @@ -28,7 +28,6 @@ #include #include -#include #include #include #include diff --git a/include/boost/lockfree/stack.hpp b/include/boost/lockfree/stack.hpp index b60b121..3a5312e 100644 --- a/include/boost/lockfree/stack.hpp +++ b/include/boost/lockfree/stack.hpp @@ -22,7 +22,6 @@ #include #include -#include #include #include #include From 38ef540123c4e0dfc88d1b77e80192c9a46c2bb0 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Fri, 22 May 2026 15:51:28 +0800 Subject: [PATCH 3/3] cleanup: fix use concepts / enablers --- include/boost/lockfree/queue.hpp | 10 ++++++++++ include/boost/lockfree/spsc_queue.hpp | 2 +- include/boost/lockfree/stack.hpp | 4 ++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/boost/lockfree/queue.hpp b/include/boost/lockfree/queue.hpp index 9609ebe..876e6ed 100644 --- a/include/boost/lockfree/queue.hpp +++ b/include/boost/lockfree/queue.hpp @@ -470,7 +470,12 @@ class queue * * \note Thread-safe and non-blocking. Might modify return argument even if operation fails. * */ +#if !defined( BOOST_NO_CXX20_HDR_CONCEPTS ) template < typename U > + requires( std::is_constructible_v< U, T && > ) +#else + template < typename U, typename Enabler = std::enable_if_t< std::is_constructible< U, T&& >::value > > +#endif bool pop( U& ret ) { for ( ;; ) { @@ -569,7 +574,12 @@ class queue * \note Not thread-safe, but non-blocking. Might modify return argument even if operation fails. * * */ +#if !defined( BOOST_NO_CXX20_HDR_CONCEPTS ) template < typename U > + requires( std::is_constructible_v< U, T && > ) +#else + template < typename U, typename Enabler = std::enable_if_t< std::is_constructible< U, T&& >::value > > +#endif bool unsynchronized_pop( U& ret ) { for ( ;; ) { diff --git a/include/boost/lockfree/spsc_queue.hpp b/include/boost/lockfree/spsc_queue.hpp index 136e7af..c8ed34b 100644 --- a/include/boost/lockfree/spsc_queue.hpp +++ b/include/boost/lockfree/spsc_queue.hpp @@ -767,7 +767,7 @@ class spsc_queue : public detail::make_ringbuffer< T, Options... >::ringbuffer_t template < typename U > requires( std::is_convertible_v< T, U > ) #else - template < typename U, typename Enabler = std::enable_if< std::is_convertible< T, U >::value > > + template < typename U, typename Enabler = std::enable_if_t< std::is_convertible< T, U >::value > > #endif bool pop( U& ret ) { diff --git a/include/boost/lockfree/stack.hpp b/include/boost/lockfree/stack.hpp index 3a5312e..5926f89 100644 --- a/include/boost/lockfree/stack.hpp +++ b/include/boost/lockfree/stack.hpp @@ -588,7 +588,7 @@ class stack template < typename U > requires( std::is_convertible_v< T, U > ) #else - template < typename U, typename Enabler = std::enable_if< std::is_convertible< T, U >::value > > + template < typename U, typename Enabler = std::enable_if_t< std::is_convertible< T, U >::value > > #endif bool pop( U& ret ) { @@ -659,7 +659,7 @@ class stack template < typename U > requires( std::is_convertible_v< T, U > ) #else - template < typename U, typename Enabler = std::enable_if< std::is_convertible< T, U >::value > > + template < typename U, typename Enabler = std::enable_if_t< std::is_convertible< T, U >::value > > #endif bool unsynchronized_pop( U& ret ) {