1/* When assigning function pointers, allow for covariant return types 2 and contravariant argument types. */ 3/* { dg-do compile } */ 4#include "../objc-obj-c++-shared/TestsuiteObject.h" 5 6@class Derived; 7 8TestsuiteObject *ExternFunc (TestsuiteObject *filePath, TestsuiteObject *key); 9typedef id FuncSignature (TestsuiteObject *arg1, Derived *arg2); 10 11@interface Derived: TestsuiteObject 12+ (void)registerFunc:(FuncSignature *)function; 13@end 14 15void foo(void) 16{ 17 [Derived registerFunc: ExternFunc]; 18} 19 20