An object property is excluded on purpose: the facade has no getObject, and a handle to an
intermediate is not what a caller wants anyway - group('fogOptions') is.
The template arm is free-form data: the C++ keeps walking inside a Variant, so
feature.properties.name resolves even though no table can know the leaf. Its type comes
back as Json, which is what it honestly is.
An UNNARROWED object - MassifLayer, which is what layers().get(i) and source() hand
back - takes any path, the way Path and WritablePath already do: nothing is known about the
class, so nothing can be said about its paths, and the C++ resolves the path either way. Without
the guard, Path<any> and ObjectPath<any> were both string, their Exclude was
never, and only the dotted arm survived - so get('maxZoom') was an error on every object
whose class had not been named.
The paths
getcan read.An object property is excluded on purpose: the facade has no getObject, and a handle to an intermediate is not what a caller wants anyway -
group('fogOptions')is.The template arm is free-form data: the C++ keeps walking inside a Variant, so
feature.properties.nameresolves even though no table can know the leaf. Its type comes back asJson, which is what it honestly is.An UNNARROWED object -
MassifLayer, which is whatlayers().get(i)andsource()hand back - takes any path, the wayPathandWritablePathalready do: nothing is known about the class, so nothing can be said about its paths, and the C++ resolves the path either way. Without the guard,Path<any>andObjectPath<any>were bothstring, theirExcludewasnever, and only the dotted arm survived - soget('maxZoom')was an error on every object whose class had not been named.