The phantom member is erased at runtime and exists so a source handle cannot be passed where a
layer handle belongs. It is INVARIANT in the class - a Handle<PolygonGeometry> is not a
Handle<Geometry> - which is why an OBJECT property's value type is a bare Handle: the
SDK downcasts a written handle and refuses the wrong class at runtime, so a brand there would
only reject the subclasses it actually accepts.
The default is any, so a bare Handle means "some object" rather than "every class at
once", which nothing would satisfy.
A registered object, as the C++ side numbers it.
The phantom member is erased at runtime and exists so a source handle cannot be passed where a layer handle belongs. It is INVARIANT in the class - a
Handle<PolygonGeometry>is not aHandle<Geometry>- which is why an OBJECT property's value type is a bareHandle: the SDK downcasts a written handle and refuses the wrong class at runtime, so a brand there would only reject the subclasses it actually accepts.The default is
any, so a bareHandlemeans "some object" rather than "every class at once", which nothing would satisfy.