Una referencia es una abstracción en el nivel del idioma. Es una forma opaca de aliasar una variable a otra. Mientras que bajo el capó, es probable que el compilador resuelva referencias utilizando punteros, son cosas muy diferentes en un nivel superior. Por otro lado, los punteros son utilizados explícitamente por un programador para lograr indirección. Una variable de puntero es una variable distinta de lo que apunta. Una referencia debe considerarse como si fuera simplemente un alias de la variable original, no como si fuera otra variable con una dirección. En consecuencia, un alias para un alias de una variable sería simplemente un alias de la variable misma. Teniendo en cuenta el enlace, una referencia a una variable es una cosa en tiempo de compilación que puede ayudar a entender la lógica detrás de este comportamiento.
Con este razonamiento, puede argumentar que, dado que las matrices son estructuras que almacenan valores, no variables, no tiene sentido que puedan almacenar alias de variables. Básicamente, una variable de referencia (con lo que quiero decir el puntero, si existe, que puede ser utilizado por el compilador para cablear la referencia) es invisible para el programador en el nivel de C++. Si era posible declarar matrices de referencias, el compilador probablemente necesitaba requerir índices constantes pasados a las matrices para poder resolver el enlace en tiempo de compilación.
Porque Bjarne Stroustrup lo dice. –
Posible duplicado: http://stackoverflow.com/questions/1164266/why-arrays-of-references-are-illegal –
Tales respuestas aburridas. ¿Qué hay de responder por qué el estándar no lo permite? ¿Hay alguna razón fundamental por la cual C++ no puede soportar referencias de reencuadernación? –