?=?: function with parameters pointer to signed int signed int returning signed int ?*?: function with parameters signed int signed int returning signed int square: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) ?*?: pointer to function with parameters instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters t: instance of type T (not function type) returning instance of type T (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?*? ...to: Name: t Name: t quad: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) square: pointer to function with parameters instance of type U (not function type) returning instance of type U (not function type) function with parameters u: instance of type U (not function type) returning instance of type U (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: square ...to: Applying untyped: Name: square ...to: Name: u f: function accepting unspecified arguments returning nothing with body CompoundStmt Expression Statement: Applying untyped: Name: quad ...to: constant expression 7 signed int