国产日韩精品视频_2020久久国产最新免费观看_国内久久久久影院精品_日本一区二区视频在线

我愛學(xué)習(xí)網(wǎng)-上傳
當(dāng)前位置: 主頁 > 文庫 > C++ >

c++ 引用折疊

時間:2020-11-09 20:12來源:我愛學(xué)習(xí)網(wǎng) 作者:apple 點(diǎn)擊:

引用折疊

在現(xiàn)代 C++ 中一共有兩種引用類型,左值引用與右值引用,因此,在類型組合與推導(dǎo)的時候它們可能會出現(xiàn)四種組合。但是 C++ 不允許出現(xiàn)引用的引用,因此,需要一種機(jī)制來消除多重引用,這個機(jī)制就是引用折疊,引用折疊規(guī)則如下:

補(bǔ)充幾點(diǎn):

  1. 引用折疊是針對通用引用的
  2. 當(dāng)左值作為參數(shù)傳入的時候模板參數(shù) T 推導(dǎo)為左值引用類型 T&
  3. 當(dāng)右值作為參數(shù)傳入的時候模板參數(shù) T 推導(dǎo)為值類型 T
  4. 然后再應(yīng)用引用折疊規(guī)則,推導(dǎo)出具體的參數(shù)類型

引用折疊使用場景

引用折疊發(fā)生的場景不多,主要有下面四種情形:

  1. T&& 模板類型推導(dǎo)
  2. auto&& 變量類型推導(dǎo),包括 Lambda 形參
  3. typedef / using T&& 別名聲明
  4. decltype(T)

代碼示例 :

#include 

class X {};

// lvalues are encoded as lvalue reference type
// rvalues are encoded as non-reference value type
// T's type plus '&&' collapse to param's type
template  void func(T &?m) {
  if constexpr (std::is_lvalue_reference_v) {
    std::cout << "T is lvalue reference\n";
    // T deduced to 'T&'
    // param's type is 'T& &&' collapse to 'T&'
  } else {
    std::cout << "T is non-reference\n";
    // T deduced to 'T'
    // param's type is 'T &&' collapse to 'T&&'
  }
}

template  class Y {
public:
  typedef T &&rvalueRef_t0;
  using rvalueRef_t1 = T &&;
  rvalueRef_t1 y_;
};

int main() {
  std::cout << std::boolalpha;
  using std::cout, std::is_same_v;

  // case 1: template instantiation (T&&)
  X x1{};
  func(x1);            // T is lvalue reference
  func(std::move(x1)); // T is non-reference

  // case 2: auto&& variable
  X x20{};
  // lvalue cause auto deduced to 'X&'
  // x21's type is 'X& &&' collapse to 'X&'
  auto &&x21 = x20;
  cout << is_same_v << '\n'; // true

  // rvalue cause auto deduced to 'X'
  // x22's type is 'X &&' collapse to 'X&&'
  auto &&x22 = std::move(x20);
  cout << is_same_v << '\n'; // true

  // case 3: typedef and alias declarations
  cout << is_same_v::rvalueRef_t0> << '\n';   // true
  cout << is_same_v::rvalueRef_t1> << '\n';   // true
  cout << is_same_v::rvalueRef_t0> << '\n'; // true
  cout << is_same_v::rvalueRef_t1> << '\n'; // true

  // case 4: decltype
  cout << is_same_v::y_)> << '\n'; // true

  return 0;
}

再談 std::forward

圖解 std::forward 與引用折疊的工作過程:

std::forward 對于左值,返回左值引用,對于右值,返回右值引用,保留類型修飾符

總結(jié)

  1. 理解引用折疊規(guī)則
  2. 了解引用折疊發(fā)生的場景
  3. 理解完美轉(zhuǎn)發(fā)的本質(zhì),以及引用折疊規(guī)則的應(yīng)用
------分隔線----------------------------
    ?分享到??
看看啦
国产日韩精品视频_2020久久国产最新免费观看_国内久久久久影院精品_日本一区二区视频在线

亚洲影视在线播放| 免费观看成人| 欧美一区激情| 久久久久成人精品| 欧美电影电视剧在线观看| 欧美韩日一区| 国产精品视区| 在线观看日韩av电影| 亚洲激情成人在线| 亚洲欧美日本视频在线观看| 久久久久久成人| 欧美日韩岛国| 国产亚洲欧美日韩精品| 亚洲第一在线综合在线| 在线亚洲+欧美+日本专区| 午夜视频久久久久久| 免费中文日韩| 国产精品男人爽免费视频1| 尤物精品在线| 亚洲影院免费| 欧美刺激午夜性久久久久久久| 欧美亚洲成人网| 亚洲第一福利社区| 亚洲免费视频观看| 欧美承认网站| 狠狠色丁香婷婷综合久久片| 一本色道久久综合亚洲精品高清| 性欧美1819sex性高清| 欧美激情精品久久久久久蜜臀| 国产精品免费久久久久久| 亚洲成人在线视频播放| 校园激情久久| 国产精品www网站| 亚洲经典一区| 久久精品在线| 欧美午夜久久| 亚洲日本激情| 麻豆av一区二区三区| 国产欧美成人| 亚洲一区在线直播| 欧美日韩高清免费| 亚洲人午夜精品| 免费人成网站在线观看欧美高清 | 欧美日韩系列| 亚洲国产美女| 久久亚洲精品一区二区| 国产精品一区=区| 亚洲一区二区三区四区五区午夜| 欧美激情视频网站| 亚洲黄色成人久久久| 快播亚洲色图| 在线观看一区二区视频| 久久久免费观看视频| 国语自产精品视频在线看一大j8| 午夜视频久久久| 国产精品一二三四区| 亚洲欧美日韩国产| 国产乱码精品| 久久电影一区| 国产一区高清视频| 久久婷婷久久| 亚洲福利视频免费观看| 老牛嫩草一区二区三区日本| 在线观看国产精品网站| 欧美a级一区二区| 亚洲日韩第九十九页| 欧美激情a∨在线视频播放| 亚洲人成网站在线观看播放| 国产欧美日韩精品专区| 欧美一区二区黄色| 国语自产精品视频在线看抢先版结局| 久久精品成人欧美大片古装| 国内自拍视频一区二区三区| 久久婷婷久久| 亚洲毛片一区| 国产精品久久久久久久久久三级 | 久久激情久久| 亚洲第一伊人| 欧美日韩一区在线视频| 亚洲专区一二三| 国产一区再线| 欧美国产高清| 欧美一区二区成人| 亚洲三级影院| 国产精品自拍一区| 欧美成人免费一级人片100| av不卡在线看| 激情综合在线| 欧美视频一区二区三区| 久久精品成人一区二区三区蜜臀| 亚洲国产精品一区| 国产精品免费aⅴ片在线观看| 久久国产精彩视频| 亚洲精品网站在线播放gif| 国产精品嫩草99av在线| 免费的成人av| 午夜精品久久久久久久| 亚洲第一页中文字幕| 国产精品久久久久久久久免费| 久久九九有精品国产23| 亚洲网站视频福利| 在线观看欧美黄色| 国产农村妇女毛片精品久久麻豆| 欧美成人xxx| 久久久久国产成人精品亚洲午夜| 在线视频日韩| 亚洲国产精品一区在线观看不卡| 国产精品久久久久久一区二区三区 | 亚洲视频高清| 影音先锋日韩有码| 国产精品综合久久久| 欧美日韩成人在线视频| 久久一本综合频道| 欧美在线一区二区| 亚洲综合国产| 亚洲一本视频| 亚洲视频在线观看视频| 亚洲精品黄色| 亚洲国产老妈| 亚洲电影av| 1000精品久久久久久久久| 国产日韩欧美中文在线播放| 欧美三级电影网| 欧美日韩午夜剧场| 欧美日韩精品免费观看视频完整| 久色成人在线| 蜜桃av噜噜一区二区三区| 久久久免费精品| 久久久久久999| 久久手机免费观看| 久热精品在线| 欧美成人r级一区二区三区| 免费亚洲电影| 欧美成人精品一区二区| 欧美大片91| 欧美日本视频在线| 欧美三级午夜理伦三级中视频| 欧美精品一区二区精品网| 欧美精品乱人伦久久久久久| 米奇777超碰欧美日韩亚洲| 老司机午夜精品视频| 老司机67194精品线观看| 免费看精品久久片| 欧美精品入口| 国产精品久久久久久久免费软件 | 欧美国产一区二区| 欧美精品在线网站| 欧美四级在线观看| 国产精品啊v在线| 国产日韩综合| 在线不卡亚洲| 夜夜嗨av一区二区三区中文字幕| 一区二区三区久久网| 午夜精品剧场| 另类酷文…触手系列精品集v1小说| 老色鬼久久亚洲一区二区| 欧美日韩999| 国产日韩欧美高清| 亚洲国内高清视频| 亚洲图色在线| 久久久久国产免费免费| 欧美成人伊人久久综合网| 国产精品乱人伦一区二区| 国产在线高清精品| 一区二区电影免费观看| 久久国产欧美日韩精品| 欧美a一区二区| 国产欧美日韩另类视频免费观看 | 亚洲人成人一区二区三区| 亚洲欧美激情视频| 两个人的视频www国产精品| 欧美日韩情趣电影| 怡红院av一区二区三区| 一区二区欧美激情| 欧美**字幕| 国产欧美亚洲精品| 一本色道久久99精品综合| 久久天堂av综合合色| 国产精品美女久久久久久久 | 久久综合久久综合这里只有精品| 欧美日韩国产123区| 国产亚洲午夜| 亚洲午夜久久久久久久久电影网| 久久久久久久性| 国产精品一区二区三区四区 | 亚洲经典在线| 久久久亚洲欧洲日产国码αv| 欧美日韩精品一区二区天天拍小说| 国产亚洲一区二区三区在线播放| 夜夜嗨av一区二区三区| 免费成人高清在线视频| 国产在线观看精品一区二区三区| 中日韩在线视频| 欧美日韩国产综合网 | 欧美视频亚洲视频| 日韩视频在线播放| 欧美成人午夜激情在线| 伊人久久综合97精品| 欧美一区二区视频在线观看| 国产精品人人做人人爽|