What's the correct way of defining struct with an Integer Parameter?

Your definition isn’t quite doing what you think, because D <: Integer is not the right condition. D <: Integer says that D is a type which is some subtype of Integer, not that D is a value whose type is <: Integer. For example:

julia> Int <: Integer
true

julia> Int32 <: Integer
true

julia> 33 <: Integer
ERROR: TypeError: in <:, expected Type, got Int64
Stacktrace:
 [1] top-level scope at none:0

Instead, you need to check the condition on D inside an inner constructor. See Restrict type of value type parameter - #2 by Tamas_Papp for an example.

3 Likes