Lines Matching defs:is
41 /// This is a normal tagged union across pointer-like types that uses the low
44 /// Each member of the sum type is specified by passing a \c
57 /// would be. This means that the zero value for the tag type is significant
58 /// and may be desirable to set to a state that is particularly desirable to
62 /// pointer stored with that tag provided it is stored in its natural bit
64 /// pointer's value is directly stored into this object and we can expose the
65 /// address of that internal storage. This is especially useful when building an
68 /// There is no support for constructing or accessing with a dynamic tag as
74 // the minimum tag value is zero, this allows code below to cleanly expose the
76 // itself. This is especially useful when building `ArrayRef`s out of a single
103 "Pointer is insufficiently aligned to store the discriminant!");
123 template <TagT N> bool is() const { return N == getTag(); }
126 void *P = is<N>() ? getVoidPtr() : nullptr;
132 assert(is<N>() && "This instance has a different active member.");
137 /// If the tag is zero and the pointer's value isn't changed when being
145 /// If the tag is zero and the pointer's value isn't changed when being
151 assert(is<HelperT::MinTag>() && "The active tag is not zero!");
155 // member so that accessing it indirectly through the returned address is