Domanda

Considera il prossimo esempio:

#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 compilazione non riesce ai messaggi di errore successivi:

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

Quale paragrafo nello standard spiega questo errore?

PS: so che se muovo la definizione della funzione davanti a Main farà andare via l'errore.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top