// { dg-do compile } bool foo(); struct C { C() { if (foo()) foo(); } }; struct S { struct dummy { int i_; }; typedef int dummy::*bool_type; operator bool_type() const { return foo() ? &dummy::i_ : 0; } }; int x; struct adaptor { C c; virtual void bar() { if (S()) x = 0; } }; int main() { adaptor a; }