Variadic template et pointeur sur fonction
Bonjour, ou bonsoir à tous, merci de vous attarder sur mon modeste message :zen:
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.
Code:
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;
} |
Hors, il y a un os... Voici l'insulte de mon compilo
Citation:
undefined reference to `std::pair<int, int> chronoFonct::chrono<int, bool, char, int>(int (*)(bool, char, int), bool, char, int)'
voila, je compille avec l'option -std=c++11, et avec mingw
Si vous savez pourquoi cette erreur, vous serez gentil de m'aider...
Merci d'avance