1. 程式人生 > >C++可變模板引數中&&和&的使用

C++可變模板引數中&&和&的使用

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都是右值,是不能作為引用&引數。