Pregunta

Considere el siguiente ejemplo:

#include <iostream>

template< int a >
void foo();

int main(int argn, char* argv[])
{
    foo<1>();
}

template<>
void foo<1>()
{
    std::cout<<1<<std::endl;
}

La compilación falla con los siguientes mensajes de error:

rg.cpp:12: error: specialization of ‘void foo() [with int a = 1]’ after instantiation

¿Qué párrafo en el estándar explica este error?

PD: Sé que si muevo la definición de función frente a Main hará que el error desaparezca.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top