You should be able to achieve what you want while leaving a single user-accessible default constructor (which will be used for static and auto objects -- you appear to ignore the existence of auto objects, e.g. local variables, so I imagine you want to treat these cases the same).
Make operator new
and a separate constructor both private, and make a public static method (it's a case of the "factory method" design pattern) which only does a return new TheClass(123);
(assuming the separate constructor takes for example an integer, but of course you can pick any type of argument you want, as the argument isn't used anyway).
You know you said the object should have a single constructor, but from the user's point of view that's exactly of the class is behaving, and there's no "explicit selection of constructor" on the user's part (he just can't call new
explicitly but must go through your supplied factory method, that's all).