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都是右值,是不能作为引用&参数。
本文深入探讨了C++中模板函数的两种实现方式:一种使用右值引用(&&),另一种使用左值引用(&)。通过具体的代码示例说明了两者之间的差异,特别是当传递不同类型参数时的行为变化。

834

被折叠的 条评论
为什么被折叠?



