32 lines
521 B
C
32 lines
521 B
C
// { dg-do assemble }
|
|
|
|
struct
|
|
Foo
|
|
{
|
|
public:
|
|
typedef void* (*copier_fn)(void const*);
|
|
void foo() const;
|
|
void bar(char const*, void const*) const;
|
|
private:
|
|
struct
|
|
Bar
|
|
{
|
|
char const* key;
|
|
void const* item;
|
|
};
|
|
};
|
|
|
|
void
|
|
Foo::foo() const
|
|
{
|
|
Bar* cp = 0;
|
|
copier_fn copyfn = 0;
|
|
|
|
bar(cp->key, cp->item);
|
|
bar(cp->key, (copyfn) ? (*copyfn)(cp) : 0);
|
|
bar(cp->key, (copyfn) ? (*copyfn)(0) : 0);
|
|
|
|
bar(cp->key, (copyfn) ? (*copyfn)(0) : cp->item);
|
|
bar(cp->key, (copyfn) ? (*copyfn)(cp) : cp->item);
|
|
}
|