O main () é realmente o início de um programa C ++?

A seção $ 3.6.1 / 1 do padrão C ++ lê:

Um programa deve conter uma função global chamadaa Principal, que é o designadocomeçar do programa.

Agora considere este código,

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}

Esse código de exemplo faz o que pretendo fazer, ou seja, imprimir o quadrado de números inteiros de 0 a 9,antes entrando nomain() função que deveria ser o "início" do programa.

Eu também compilei com-pedantic opção, GCC 4.5.0. Não dá erro, nem aviso!

Então, minha pergunta é:

Esse código é realmente compatível com o padrão?

Se estiver em conformidade com o padrão, não invalida o que o Padrão diz?main() não é o início deste programa!user_main() executado antes domain().

Eu entendo que para inicializar a variável globalmain_ret, ause_main() executa primeiro, mas isso é uma coisa completamente diferente; o ponto é que,faz invalidar a declaração citada $ 3.6.1 / 1 da Norma, conformemain() NÃO é ocomeçar do programa; é de fato ofim doesta programa!

EDITAR:

Como você define a palavra 'start'?

Tudo se resume à definição da frase"início do programa". Então, como exatamente você o define?

questionAnswers(11)

yourAnswerToTheQuestion