I think that NTuple
per se does not check that N
is an integer, Vararg
(which it is aliased to) does.
For struct
s, the recommended solution is to check in the inner constructor, eg
struct A{L}
function A{L}() where L
@assert L isa Integer
new{L}()
end
end
A(L::Integer) = A{L}() # convenience constructor
A(1) # OK
A("a fish") # error