Bonjour, ou bonsoir à tous, merci de vous attarder sur mon modeste message
Voila, je voudrais créer une fonction utilisant les template variadiques (parce que je le vaut bien, et que ça me fait bosser) prenant un pointeur sur une fonction en argument, plus les arguments de la fonction en question.
Dans mon exemple (j'ai utilisé un namespace pour pouvoir avoir une utilisation ultérieure) j'ai la fonction chrono, qui renvoie un std::pair<int, typederetour> qui contient le temps d’exécution et la valeur de retour.
Hors, il y a un os... Voici l'insulte de mon compilo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 //chronoF.h namespace chronoFonct{ template<typename Ret, typename... Arg> std::pair<int, Ret> chrono(Ret(*fonct)(Arg...), Arg...); // = std::pair<temps, type de retour> chrono(fonction, arguments) } //chronoF.cpp #include "chronoF.h" namespace chronoFonct{ template<typename Ret, typename... Arg> std::pair<int, Ret> chrono(Ret(*fonct)(Arg...), Arg... arguments){ //... } } //main.cpp #include "chronoF.h" int boucle(bool, char, int){ for(int i = 0; i < 1000; ++i); return 1; } int main(){ std::pair<int, int> a = chronoFonct::chrono(boucle, true, 'a', 1); return 0; }
voila, je compille avec l'option -std=c++11, et avec mingwundefined reference to `std::pair<int, int> chronoFonct::chrono<int, bool, char, int>(int (*)(bool, char, int), bool, char, int)'
Si vous savez pourquoi cette erreur, vous serez gentil de m'aider...
Merci d'avance
Partager