/* When assigning function pointers, allow for covariant return types | |
and contravariant argument types. */ | |
/* { dg-do compile } */ | |
#include "../objc-obj-c++-shared/TestsuiteObject.h" | |
@class Derived; | |
TestsuiteObject *ExternFunc (TestsuiteObject *filePath, TestsuiteObject *key); | |
typedef id FuncSignature (TestsuiteObject *arg1, Derived *arg2); | |
@interface Derived: TestsuiteObject | |
+ (void)registerFunc:(FuncSignature *)function; | |
@end | |
void foo(void) | |
{ | |
[Derived registerFunc: ExternFunc]; | |
} | |