glandium added a comment. OTOH. 6.2.7.3:
> A composite type can be constructed from two types that are compatible; it is > a type that is compatible with both of the two types (...) 6.2.7.5: > EXAMPLE Given the following two file scope declarations: > int f(int (*)(), double (*)[3]); > int f(int (*)(char *), double (*)[]); > The resulting composite type for the function is: > int f(int (*)(char *), double (*)[3]); This suggests that `int(*)()` and `int(*)(char*)` are compatible. 6.2.7.2: > All declarations that refer to the same object or function shall have > compatible type; otherwise, the behavior is undefined. 6.3.2.3.1: > A pointer to void may be converted to or from a pointer to any object type. A > pointer to any object type may be converted to a pointer to void and back > again; the result shall compare equal to the original pointer. These are either contradicting, making 6.3.2.3.1 UB, or void* is compatible with other pointer types. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D148827/new/ https://reviews.llvm.org/D148827 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits