欢迎光临散文网 会员登陆 & 注册

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

2023-05-12 09:56 作者:卢朓  | 我要投稿

/**

 * 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;

}



c++11可变长参数-递归以及typeinfo类的使用的评论 (共 条)

分享到微博请遵守国家法律