C 日記 Day59 萬能引用

2021-10-05 21:47:30 字數 535 閱讀 9287

templatevoid func(t&& tmpv)
萬能引用:既能接受右值,又能接受左值

滿足以下條件,右值引用會變為萬能引用:

a、必須是函式模板

b、必須是發生了模板型別推斷並且函式模板形參的樣子是:t&&;auto也存在萬能引用,以後再說。

萬能引用 和 右值引用 的區別:

1、右值引用得傳遞右值,否則編譯器報錯;

2、萬能引用做函式形參時,既可以給他傳遞右值,又可以給它傳遞左值。

如果我們傳遞進去了右值,那麼這個萬能引用就變成了了右值引用。

如果我們傳遞進去了左值,那麼這個萬能引用就變成了了左值引用。

template void func(vector&& tmpv)
萬能引用的剝奪:

1、const修飾符會剝奪乙個引用稱為萬能引用的資格。

templatevoid func(const t&& tmpv)

C 萬能引用與函式過載

在前面兩篇部落格 c 中的左值與右值 c 中的 std move 與 std forward 對c 中的萬能引用及std forward有了一定的了解,這裡主要是要說明當函式使用萬能引用時就要小心再使用函式過載了,不然稍不留神就會出現我們意想不到的錯誤。std multiset names temp...

C 萬能標頭檔案

萬能標頭檔案其實就一行 include其實它包括了 基本包括了大部分的stl庫函式,使用方便快捷 include include include include include include include 向量 include 佇列 include include include include...

C 萬能標頭檔案使用

include包含了目前c 所包含的所有標頭檔案,而且連c的標頭檔案也不需要寫了!現在再看下面這一堆亂七八糟的標頭檔案顯得莫名的冗雜 1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 i...