// 1.展开模板参数包
template<typename ... Ts>
auto print_template_direct()
{
return std::initializer_list<int>{(cout<<typeid(Ts).name()<<endl, 0)...};
}
template<typename ... Ts>
auto print_template_bylambda()
{
return [=](){ std::initializer_list<int>{(cout<<typeid (Ts).name()<<"\n",0)...};};
}
// 2.展开函数参数包
template<typename ...T>
auto print_variables_direct(T... args)
{
return std::initializer_list<int>{
( cout << (std::is_same_v<decltype(args), bool> ? std::boolalpha : std::noboolalpha) << args << "\n", 0)...};
}
template<typename ...T>
auto print_variables_bylambda(T... args)
{
return [=](){ std::initializer_list<int>{( cout << (std::is_same_v<decltype(args), bool> ? std::boolalpha : std::noboolalpha) << args << "\n", 0)...};};
}
int main(int argc, char *argv[])
{
print_template_direct<int, double, long>();
print_template_bylambda<int, double, long>()();
cout << "--------------------------------------------" << endl;
print_variables_direct('a', true, 6, 'k', "祖国越来越强");
print_variables_bylambda('a', true, 6, 'k', "祖国越来越强")();
return 0;
}
打印结果
i
d
l
i
d
l
--------------------------------------------
a
true
6
k
祖国越来越强
a
true
6
k
祖国越来越强