I don't know if this helps, but wouldn't
type Container[T] = concept c
type T = type(get(c, 0))
be more natural? Plus we could extend it to allow static parameters
type Container[N,T] = concept c
const N = c.len
type T = type(get(c, 0))
