These functions are templated on a single type. However, type inference is not smart enough to correctly infer the type of the following declaration: ``` size_t N = 10; for (auto i: sequence(1,N)) ... ``` The first argument is an `int` and the second is a `size_t. We should be able to correctly deduce the expected behavior from the given types.