int ?=?( int *, int );
int ?*?( int, int );

forall( type T | { T ?*?( T, T ); } )
T square( T t ) {
	return t * t;
}

forall( type U | { U square( U ); } )
U quad( U u ) {
	return square( square( u ) );
}

void f() {
	quad( 7 );
}

// Local Variables: //
// tab-width: 4 //
// End: //
