================
@@ -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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to