I think lockfree::queue could actually support move-only types as long as there are no concurrent pop operations. (If there is only a single consumer, nobody can concurrently "steal" the data.)
I guess this could be implemented as a compile time policy.