C++可變模板引數中&&和&的使用
阿新 • • 發佈:2019-02-02
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都是右值,是不能作為引用&引數。