问题 A generic std::atomic<T> is required to have a T that is Copy Constructible and Copy Assignable : [atomics.types.generic]/1 The program is ill-formed if any of (1.1) is_trivially_copyable_v<T> , (1.2) is_copy_constructible_v<T> , (1.3) is_move_constructible_v<T> , (1.4) is_copy_assignable_v<T> , or (1.5) is_move_assignable_v<T> is false . Above is not new to C++20. Compilers may use static_assert to issue an error for a non-conforming T. However, C++20 could use formal