How about instead we add a constructor to std::mutex to allow it to be born locked?
Well, because the issue here isn't really about making a mutex that's locked. That's just a very convenient concrete example of the general problem. If we gave std::mutex a constructor that allowed it to be born locked, then we'd have to invent a new concrete example to demonstrate the general problem. (Like maybe "making a vector with a given capacity.")
–Arthur