Example
If we define a function that takes an InSeq<T>& argument, each use of that argument requires a type decision (because InSeq uses virtual functions each time it accesses the corresponding data structure)
If we make it take a T directly, the decision can be at compile time