En un capricho, he tratado de definir la función principal como una función de plantilla mediante tañido 2.9:Necesita cita de norma sobre la legalidad de la función principal, como una función de plantilla
template <typename T = void>
int main(int argc, char **argv)
{
}
y recibe el siguiente error.
error: 'main' cannot be a template
int main(int argc, char **argv)
^
¿Alguien sabe qué sección de la norma prohíbe esto, y lo que el texto es relevante?
Independientemente de lo que diga la norma, ¿cómo espera que el vinculador sepa que 'main' es su punto de entrada? –
En mi publicación original, dije incorrectamente que estaba usando clang 2.0, cuando debería haber dicho clang 2.9. Desde entonces he corregido eso. –
@DennisZickefoose - Bueno, tenía la esperanza de que el hecho de que se llamara 'main' sería una pista. Obviamente, el '' es problemático, pero como se trata de una plantilla de función, en cualquier otro caso podríamos modificarlo para usar la inferencia de tipo para que pueda invocarse sin la plantilla explícita goo. –