From Wikibooks, open books for an open world
This attribute is useful to check for membership of a type in a class hierarchy. It can also be used if it is known the type is in a class hierarchy and type-specific processing must take place.
Ref : My_Tagged_Type_Reference; ... if Ref.all in My_Tagged_Type'Class then -- The object pointed at by Ref is in class hierarchy that is rooted at My_Tagged_Type. if Ref.all'Tag = My_Tagged_Type'Tag then -- Object is of type My_Tagged_Type. else -- Object is of some other type in the hierarchy. end if; else -- Object is not in the class hierarchy rooted at My_Tagged_Type (it might be of a progenitor type though). end if;