Question

Considérez l'exemple suivant:

#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 compilation échoue avec les messages d'erreur suivants:

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

Quel paragraphe de la norme explique cette erreur?

PS: Je sais que si je déplace la définition de la fonction devant Main fera disparaître l'erreur.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top