La spécialisation de la fonction de modèle après le point d'utilisation rompra la compilation
-
29-10-2019 - |
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