La specializzazione della funzione modello dopo il punto d'uso romperà la compilation
-
29-10-2019 - |
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