The actual behavior throws errors, where the integer version doesn't.
match(as.integer64(1:10), integer64())
# Error in if (bx <= 17L && btable >= 16L) { : missing value where TRUE/FALSE needed
match(as.integer64(1:10), integer64(), nomatch=NULL)
# Error in if (bx <= 17L && btable >= 16L) { : missing value where TRUE/FALSE needed
match(as.integer64(1:10), integer64(), nomatch=as.integer64(10L))
# Error in if (bx <= 17L && btable >= 16L) { : missing value where TRUE/FALSE needed
match(integer64(), as.integer64(1:10))
# integer(0)
# Warning message:
# In match.integer64(integer64(), as.integer64(1:10)) : NAs introduced by coercion to integer range
cf.
match(1:10, integer())
# [1] NA NA NA NA NA NA NA NA NA NA
match(1:10, integer(), nomatch=NULL)
# [1] NA NA NA NA NA NA NA NA NA NA
match(1:10, integer(), nomatch=10L)
# [1] 10 10 10 10 10 10 10 10 10 10
match(integer(), 1:10)
# integer(0)
The actual behavior throws errors, where the integer version doesn't.
cf.