================
@@ -32,3 +38,16 @@ CompleteC cc;
// CIR: cir.global external @cc = #cir.zero : !rec_CompleteC
// LLVM: @cc = global %class.CompleteC zeroinitializer
// OGCG: @cc = global %class.CompleteC zeroinitializer
+
+class Base {
+public:
+ int a;
+};
+
+class Derived : public Base {
+public:
+ int b;
+};
+
+int use(Derived *d) { return d->b; }
----------------
erichkeane wrote:
Can we get a CRTP test as well? Something like:
```
template<typename Derived>
struct CRTP {
Derived *otherDerived /* initializer left out, but add something to make sure
this isn't ub */;
void callThing() {
static_cast<Derived>(*this)->thing();
otherDerived->thing();
}
};
struct D : CRTP<D> {
void thing(){}
};
void use( D&d) {
d.callThing();
}
```
I suspect it'll work fine, but its awkward enough with this sorta thing that it
might be demonstrative.
https://github.com/llvm/llvm-project/pull/142823
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits