"uninitialized construction" is oxymoronic.
Lack of initialization in construction only occurs as a result of bugs (failing to recursively construct the entire object).
If a C++ class has a constructor, it is called. If for any reason it cannot be called, then that situation is erroneous (for instance wrong construction arguments passed that don't match any constructor).
A C++ class can contain members which are of basic types, and its constructors can neglect to initialize those members.
This could be exploited for optimization: if you have a complex initialization which happens later, you can avoid the overhead of writing to those members.
That would be the way to do it, rather than trying to create an entire class that can be left uninitialized.
If you really want that, a way to emulate it would be to create a POD (plain old datastructure) without any constructors, and then use some additional techniques so that it can be used in ways that guarantee its initialization. For instance make a derived class from it which adds construction, or make use of the curiously repeating template pattern, etc.
Then you can still use the POD directly if you want it not initialized.