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 30 31 32 33 34 35 36
|
#include <iostream>
#include <typeinfo>
/* Version sans arguments de fonction */
void printType(){
std::cout << std::endl ;
}
template <typename Arg, typename ... Args>
void printType() {
std::cout << typeid(Arg).name();
printType<Args...>();
}
/* Version avec arguments de fonction */
void printType2(){
std::cout << std::endl ;
}
template <typename Arg, typename ... Args>
void printType2(Arg v, Args ... args) {
std::cout << typeid(Arg).name();
printType2(args...);
}
int main(){
int a, c, e;
float b, d;
printType2(a,b,c,d,e); // ok : sortie du style "ififi"
printType2(b,c,d,e,a); // ok : sortie du style "fifii"
printType(); // ok : sortie ligne vide
printType<int, float>(); // erreur de compilation "no matching function for call printType()"
return 0;
} |
Partager