C++可变模板参数中&&和&的使用

来源:互联网 发布:java urlencoder 中文 编辑:程序博客网 时间:2024/06/04 22:47
template<typename T>void tbLog(T& t){cout << t << endl;}//void tbLog()template<typename T, typename... Args>void tbLog(T& t, Args&&... args){cout << t;tbLog(args...);}

此段代码用了&&,所以使用tbLog( 2, “xx”, 1.f, " ", 444); 是可以的


template<typename T>void tbLog(T& t){cout << t << endl;}//void tbLog()template<typename T, typename... Args>void tbLog(T& t, Args&... args){cout << t;tbLog(args...);}

此段代码用的是&,所以使用tbLog( 2, “xx”, 1.f, " ", 444)时,会出现编译错误。


这个区别应该就是右值引起的差别。其中2 1.f 444都是右值,是不能作为引用&参数。


0 0