1// { dg-do assemble } 2 3struct 4Foo 5{ 6public: 7 typedef void* (*copier_fn)(void const*); 8 void foo() const; 9 void bar(char const*, void const*) const; 10private: 11 struct 12 Bar 13 { 14 char const* key; 15 void const* item; 16 }; 17}; 18 19void 20Foo::foo() const 21{ 22 Bar* cp = 0; 23 copier_fn copyfn = 0; 24 25 bar(cp->key, cp->item); 26 bar(cp->key, (copyfn) ? (*copyfn)(cp) : 0); 27 bar(cp->key, (copyfn) ? (*copyfn)(0) : 0); 28 29 bar(cp->key, (copyfn) ? (*copyfn)(0) : cp->item); 30 bar(cp->key, (copyfn) ? (*copyfn)(cp) : cp->item); 31} 32