Per un capriccio, ho cercato di definire la funzione principale come una funzione modello utilizzando clang 2.9:Hai bisogno di citare dal livello di legalità della funzione principale, come una funzione template
template <typename T = void>
int main(int argc, char **argv)
{
}
e ha ricevuto il seguente errore.
error: 'main' cannot be a template
int main(int argc, char **argv)
^
Qualcuno sa quale sezione dello standard lo vieta e qual è il testo pertinente?
Indipendentemente da ciò che dice lo standard, come ti aspetti che il linker sappia che 'main' è il tuo punto di ingresso? –
Nel mio post originale, ho dichiarato erroneamente che stavo usando clang 2.0, quando avrebbe dovuto dire clang 2.9. Da allora l'ho corretto. –
@DennisZickefoose - Beh, stavo sperando che il fatto che fosse chiamato "main" sarebbe un suggerimento. Ovviamente il '' è problematico, ma dal momento che questo è un modello di funzione, in qualsiasi altro caso potremmo modificarlo per usare l'inferenza del tipo in modo che possa essere chiamato senza il goo template esplicito. –