new file mode 100644
@@ -0,0 +1,15 @@
+// { dg-do compile { target c++20 } }
+
+#include <atomic>
+
+template<class T> concept has_and = requires (T& a) { a &= false; };
+template<class T> concept has_or = requires (T& a) { a |= false; };
+template<class T> concept has_xor = requires (T& a) { a ^= false; };
+template<class T> concept has_fetch_add = requires (T& a) { a.fetch_add(true); };
+template<class T> concept has_fetch_sub = requires (T& a) { a.fetch_sub(true); };
+
+static_assert( not has_and<std::atomic_ref<bool>> );
+static_assert( not has_or<std::atomic_ref<bool>> );
+static_assert( not has_xor<std::atomic_ref<bool>> );
+static_assert( not has_fetch_add<std::atomic_ref<bool>> );
+static_assert( not has_fetch_sub<std::atomic_ref<bool>> );