import typetraits

type MyObj = object
type MyObj2 = object

proc test( x:int ) = discard
proc test( x:MyObj ) = discard

template hasTestProc(x:typed) =
    when( compiles( test(x) ) ):
        echo typetraits.name( type(x) ), " has Test Proc"
    else:
        echo typetraits.name( type(x) ), " doesn't have Test Proc"

hasTestProc( 0 ) 
hasTestProc( "abc" ) 
hasTestProc( MyObj() )
hasTestProc( MyObj2() ) 