The idea of using template meta programming to iterate over every possible array type that can be encountered is leading to significant compile issues. We are relaxing our constraints a bit to allow accessing array values through virtual methods. That way, different implementations can work together without having to compile a special case for every combination.