[2018年6月5号]C++ primer 课后练习 第十六章 模版与泛型编程

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类型进行输出



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值