16.51
template <typename T, typename...Args>
void foo_1651(T& t1, Args... args){
cout << "Args size: " << sizeof...(Args) << "args size: " << sizeof...(args) << endl;
}
int main() {
int i = 0 ; double d= 3.14;string s = "how now brown cow";
foo_1651(i, s, 42, d); // Args : 3, args: 3
foo_1651(s, 42, "hi");// Args : 2, args: 2
foo_1651(d, s);// Args : 1, args: 1
foo_1651("hi");// Args : 0, args: 0
for (;;);
return 0;
}
16.52
结果一致
16.53
template <typename T>
ostream& print_args(ostream& os, const T& t){
return os << t << endl;
}
template <typename T, typename...Args>
ostream& print_args(ostream& os, const T& t, Args...args){
os << t << ",";
return print_args(os, args...);
}
int main() {
int i = 0 ; double d= 3.14;string s = "how now brown cow";
print_args(cout , i,d,s,"42");
for (;;);
return 0;
}
16.54
当没有<<运算符时候,编译期间会报错
16.55
如预想正常执行??
16.56
template <typename...Args>
ostream& errorMsg(ostream& os, Args...args){
return print_args(os,debug_rep(args)...);
}
16.57
errorMsg可以对不同类型的参数进行输出操作,而error_msg只能对string类型进行输出