I know that the atomic types do not have copy constructors, and I assume that explains why this code does not work.
Yes, the error says that quite clearly.
Does anybody know a way to actually get this code to work?
Instead of copy-initialising from a temporary, which requires an accessible copy constructor:
std::atomic<int> order::c = std::atomic<int>(0);
use direct-initialisation, which doesn’t:
std::atomic<int> order::c(0); // or {0} for a more C++11 experience
You should probably prefer that anyway, unless you enjoy reading unnecessarily verbose code.