¿Por qué C ++ nunca permitió que se usaran funciones antes de que se declararan? [cerrado]

OK, sé que esto parece un duplicado de¿Por qué las funciones deben declararse antes de ser utilizadas? pero no parece que las respuestas existentes aborden completamente todos los detalles.

Sé que C ++ se diseñó originalmente en los años 80 para poder traducirlo de una sola vez, porque las computadoras eran lentas. OKAY. Pero el estándar más reciente se publicó en 2011, por lo que no veo por qué los compiladores de C ++ no pueden hacer cosas que ahora requieren pases múltiples. Todavía dañaría el rendimiento, sí, pero solo si realmente se hizo necesario. Entonces, lo siguiente solo requeriría un solo pase:

void foo();
int main() { foo(); }
void foo() {}

mientras que para lo siguiente, el compilador podría hacer dos (y ser más lento), porque no sabe sifoo es una función o un tipo hasta que vea la siguiente declaración:

int main() { foo(); }
void foo() {}

y si intentó usar una función sin declararla primero, y la declaración no está en la unidad de traducción actual,entonces Sería un error. Pero si está en la misma unidad de traducción, entonces el compilador podría hacer pases adicionales.

Mi colega argumenta que dicha característica ahorraría mucho tiempo al desarrollador y evitaría problemas con la declaración y la definición que no coinciden. Y estoy seguro de que esto ha sido propuesto muchas veces y rechazado cada vez. Cuál es elrazonamiento real detrás de rechazarlo,es decir, la justificación del comité?

Respuestas a la pregunta(2)

Su respuesta a la pregunta