D não tem matrizes covariantes. Permitiu-lhes antes da versão mais recente ( DMD 2.057 ), mas que bug foi corrigido.
Uma matriz em D é efetivamente apenas uma estrutura com um ponteiro e um comprimento:
struct A(T)
{
T* ptr;
size_t length;
}
A verificação de limites é feita normalmente ao indexar uma matriz, mas é removida quando você compila com -release
. Portanto, no modo de lançamento, não há diferença real de desempenho entre arrays em C / C ++ e aqueles em D.