@nogc because inference could fail,
see Bugzilla issue 17084.
Returns
true if source's representation embeds a pointer
that points to target's representation or somewhere inside it.
If source is or contains a dynamic array, then, then these functions will check if there is overlap between the dynamic array and target's representation.
If source is a class, then it will be handled as a pointer.
If target is a pointer, a dynamic array or a class, then these functions will only check if source points to target, not what target references.
If source is or contains a union or void[n], then there may be either false positives or false negatives:
doesPointTo will return true if it is absolutely certain source points to target. It may produce false negatives, but never false positives. This function should be prefered when trying to validate input data.
mayPointTo will return false if it is absolutely certain source does not point to target. It may produce false positives, but never false negatives. This function should be prefered for defensively choosing a code path.