C++11中的“萬能引用”

首先我們來看一個函數模板的代碼:

template<typename T>
void func(T& param){
}

這裏模板函數參數接收一個引用,但是卻不能這樣調用:

func(27);
//error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’

這裏參數只能接受一個“左值”(在C++11中可以取址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值),而27是一個右值。

這時候萬能引用就要上場了~
再來看這個代碼

template<typename T>
void func(T&& param){
}

再調用func

func(27)

正確,萬能引用可以傳入一個右值,不過傳進來後類型也就成了int而不是引用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章