The QQmlPropertyMap protected template constructor is defined as:
Here, the result of allocatePrivate() dereferencing is of type QObjectPrivate, which has unstable ABI (i.e. its size can change).
So the code using this constructor (i.e. gsettings-qt does it) will break whenever QObjectPrivate changes, which is not ideal.
As Qt promises being binary compatible, such stuff should not be exposed in public headers.