Seems like you could just elaborate as needed:
    
    
    proc double[T: SomeSignedInt](x: T): T =
      when (T is int) or (T is int64) or (T is int32):
        2 * x
      else:
        x
    
    
    echo "int double(1): ", double(1)
    echo "int64 double(1): ", double(1'i64)
    echo "int32 double(1): ", double(1'i32)
    echo "int16 double(1): ", double(1'i16)
    echo "int8 double(1): ", double(1'i8)
    
    
    
    Run

Reply via email to