Porque C++ fue diseñado para ser (casi) retrocompatible con el código C.
Existen casos en los que el código C se descompone en un compilador de C++, pero son bastante raros, y generalmente hay una buena razón por la cual se requiere esta rotura.
Pero cambiar la firma de la fuente principal, aunque es conveniente para nosotros, no es necesario. Para alguien portar código desde C, sería otra cosa que tenía que cambiar, sin obtener ningún beneficio en particular.
Otra razón es que std::vector
es una biblioteca, no una parte del lenguaje central. Y entonces, tendría que #include <vector>
en cada programa C++.
Y por supuesto, en sus primeros años, C++ no tiene un vector. Entonces, cuando el vector fue agregado al lenguaje, seguro, podría haber cambiado la firma de main
, pero luego romperían no solo el código C, sino también todos los programas C++ existentes.
¿Vale la pena?
Las implementaciones son libres de ofrecer otras firmas para main siempre que todas devuelvan un int. Entonces, una mejor pregunta sería ¿por qué no? –