Hi,

Thank you for the review.

Il 25/09/24 20:13, Jason Merrill ha scritto:

Supporting the ambiguous case seems pointless to me but, that is what
the accepted proposal specifies, so indeed that's what we should implement.

It's fundamentally the same with is_base_of, also supporting ambiguous and unaccesible bases.

+/* Nonzero iff TYPE is derived virtually from PARENT. Ignores accessibility and
+   ambiguity issues.  */
+#define DERIVED_VIRTUALLY_FROM_P(PARENT, TYPE) \
+  (lookup_base ((TYPE), (PARENT), ba_require_virtual, NULL, tf_none) != 
NULL_TREE)
I don't think we need a macro for this.

I've added it to match the existing DERIVED_FROM_P macro, but can certainly remove it, since it's got only one user. Should I remove it or keep it for symmetry?


+  ba_require_virtual = 1 << 3 /* Require a virtual base */
Comment should end with period and two spaces.


+           /* Skip this result if we require virtual inheritance
+              and this is not a virtual base. */
Likewise.

Will fix.


-      data.want_any = access == ba_any;
+      data.want_any = (access & ~ba_require_virtual) == ba_any;
        data.offset = offset;
+      data.require_virtual = (access & ba_require_virtual);
It seems like you aren't using ba_require_virtual|ba_any, so do you need
to mess with bitwise &?

base_access_flags is meant to be a bitmask, but for some reason ba_any is 0, and I didn't want to change the semantics of that == check.



+@defbuiltin{bool __builtin_is_virtual_base_of (@var{base_type}, 
@var{derived_type})}
+If @var{base_type} is a virtual base class of @var{derived_type}
+([class.derived]) then the trait is @code{true}, otherwise it is @code{false}.
+Top-level cv-qualifications of @var{base_type} and
+@var{derived_type} are ignored.
We might mention here that this ignores access and ambiguity.

Will add. This was adapted from __is_base_of's docs; do you want me to add the same remark there?

Thanks,
--
Giuseppe D'Angelo

Attachment: smime.p7s
Description: Firma crittografica S/MIME

Reply via email to