is_lock_free() evaluates to true if atomic operations on the type are lock-free.
In simplified terms, this means that lock-free atomic CPU instructions are used to enforce atomicity (no secondary locking mechanisms like mutexes are involved).
What can be atomic lock-free depends on the processor architecture
(in practice it depends on both the size and the alignment of the trivially copyable atomic object).
The subset of what is actually atomic lock-free depends on the quality of implementation
note: the C++ standard does not require that sizeof( std::atomic<T> ) must be equal to sizeof(T)