Say I have an int array like `int arr[N]` and say `arr[i]` are from a tiny domain (e.g. 1-10). Say I also have a variadic templated class with a common interface (abstract class)

```
template <int... A>
class FooImpl : public Foo
{
}

```

The question is how do I implement a function:

```
Foo* getFoo(int arr[N]);

```

or maybe better:

```
Foo* getFoo(int* pint, int size);

```

which would return `FooImpl` with template arguments corresponding my array? For example for `arr = {4,2,6,1}` I would get `FooImpl<4,2,6,1>`