/* { dg-do compile } */ /* { dg-options "-O3" } */ struct CBase { virtual void BaseFunc () {} }; struct MMixin { virtual void * MixinFunc (int, void *) = 0; }; struct CExample: CBase, public MMixin { void *MixinFunc (int arg, void *arg2) { if (arg != 1 || arg2) return 0; return this; } }; void *test (MMixin & anExample) { return anExample.MixinFunc (1, 0); } int main () { CExample c; test (c); return 0; }