C Covariant Return Types