Salut à tous,
Ma question est simple : comment passer un pointeur de fonction avec template, comme argument d'une autre fonction avec template ?
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
void func_templ(T) {};
 
void func(void (*)(int)) {};
 
template <class U>
void func2(U) {};
 
int main (void)
{    
    func2(func_templ);
    return 0;
}
Si je remplace func2(func_templ) par func(func_templ), tout est ok (pas d'erreur).
Cependant, avec func2, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
g++ -Wall -o c.o c.cpp && ./c.o
c.cpp: In function 'int main()':
c.cpp:13: error: no matching function for call to 'func2(<unresolved overloaded function type>)'
En fait la fonction func2 ne parvient pas à définir le type U si on lui donne comme argument un pointeur de fonction à template.
Quelle est la solution ?
Merci