c++11可变长参数-递归以及typeinfo类的使用

/**
* clang++ main2.cpp -std=c++11
* 可变长参数, typeinfo 类, 递归
*/
#include <iostream>
#include <vector>
#include <typeinfo>
void print() {
std::cout << "北太天元" << std::endl;
}
template<typename T, typename... Types>
void print(const T& firstArg, const Types&... args) {
std::cout << firstArg << " " << sizeof...(args) << std::endl; // sizeof ... args代表获取参数个数
print(args...);
const size_t n_args = sizeof...(args);
const std::type_info *infos[n_args] = {&typeid(args)...};
std::cout<<"可变长参数的个数是 "<< n_args <<std::endl;
if( typeid(int32_t ) == *infos[0] ){
std::cout<<"第0个参数是int32_t"<<std::endl;
std::cout<< "int32_t类型的名字是 "<< infos[0]->name() << std::endl;
}
for(int i=0; i<n_args; i++){
std::cout<< "第 "<<i<<"/"<<n_args <<" 类型的名字是 "<< infos[i]->name() << std::endl;
}
}
int main(int argc, char *argv[]) {
print("baltamatica", 3, "baltam", std::string("baltam_string") );
return 0;
}