This is an Objective-C++ specific fix to a problem that's similar to D59573 and D59622 (i.e., hitting the same assertion i added in D59054).
This time, surprisingly, the assertion is in fact incorrect: there is a cornercase in Objective-C++ in which a C++ object is not constructed with a constructor, but only zero-initialized. Namely, this happens when an Objective-C message is sent to a nil and it is supposed to return a C++ object.
I made sure that the assertion is only relaxed for Objective-C++ but it's hard to relax it in a more specific way with the amount of information that RegionStore receives. The alternative solution was to conjure a LazyCompoundValue specifically for this case instead, but implementing this cornercase in SValBuilder::makeZeroVal() is hard because there's no good region to use as the base of that LazyCompoundVal, and in the checker (this modeling currently belongs to CallAndMessageChecker) it's even uglier and is bad for checker APIs.