True but its very clumsy for large number of parameters. Even more importantly, its not forward compatible. For example, cbrt() cant reliably expanded to support bigints or any private types.
23 karma · joined October 25, 2022
void qsort_i8 ( i8 *ptr, int num);
void qsort_i16(i16 *ptr, int num);
void qsort_i32(i32 *ptr, int num);
void qsort_i64(i64 *ptr, int num);
#if __has_builtin(__builtin_overridable)
__builtin_overridable(qsort, qsort_i8, qsort_i16); // qsort resolves to qsort_i8 qsort_i16
// qsort() is forward compatible and upgradable with your own types
__builtin_overridable(qsort, qsort_i32, qsort_i64); // qsort resolves to qsort_i8 qsort_i16 qsort_i32 qsort_i64
#endif
i8 *ptr0; int num0;
i16 *ptr1; int num1;
i32 *ptr2; int num2;
i64 *ptr3; int num3;
qsort(ptr0, num0); // call qsort_i8()
qsort(ptr1, num1); // call qsort_i16()
qsort(ptr2, num2); // call qsort_i32()
qsort(ptr3, num3); // call qsort_i64()[1] https://github.com/freedesktop/pixman [2] https://github.com/nakst/luigi