context has_f( type T ) { T f( T ); }; context has_g( type U | has_f( U ) ) { U g( U ); }; forall( type V | has_g( V ) ) void h( V );