亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ 中使用lambda代替 unique_ptr 的Deleter的方法

2020-05-23 13:47:40
字體:
來源:轉載
供稿:網友

代碼

#include <iostream>#include <cstdlib>#include <memory>#include <string>#include <functional>using namespace std;class go{public:  go() {}  ~go()  {    cout << "go die./n";  }};auto d = [] ( go * gp ){  delete gp;  cout << "deletor done./n";};class go_de{public:  void operator() ( go* g )  {    d ( g );  }};int main(){  {    unique_ptr < go, go_de > b{ new go{} };//1  }  {    //unique_ptr < go, decltype (d) > b{ new go{}}; complie error //2    unique_ptr < go, decltype (d) > a{ new go{}, d };//3  }  {    unique_ptr < go, function<void(go*) > > a{ new go{}, d };//4    //i.e. unique_ptr < go, function<void(go*) > > a{ new go{}, [](go*gp) {delete gp;cout << "deletor done./n"; }};  }  system ( "pause" );  return 0;}

描述

一般的,需要給一個模板的Concept參數時,都會像代碼1的實現一樣傳入一個實現了該Concept的類型,例如go_de就實現了unique_ptr 的模板參數Deletor。

今天想嘗試一下使用lambda表達式的類型作為模板參數傳入,發現不行。原因在于

c++14 draft n4269

5.1.2 Lambda expressions

20 The closure type associated with a lambda-expression has no default constructor and a deleted copy assignment operator. It has a defaulted copy constructor and a defaulted move constructor (12.8). [ Note: These special member functions are implicitly defined as usual, and might therefore be defined as deleted. end note ]

意思就是 lambda 表達式沒有默認的構造函數,operator=也被置為deleted。只有一個默認的復制構造函數和move構造函數。很顯然,unique_ptr 的實現肯定是用到了Deletor Concept的默認構造函數的。所以編譯不通過。這個在
unique_ptr構造函數頁寫的很清楚。

2) Constructs a std::unique_ptr which owns p, initializing the stored pointer with p and value-initializing the stored deleter. Requires that Deleter is DefaultConstructible and that construction does not throw an exception.2) Constructs a std::unique_ptr which owns p, initializing the stored pointer with p and value-initializing the stored deleter. Requires that Deleter is DefaultConstructible and that construction does not throw an exception.

設想unique_ptr( pointer p, d1 );構造函數不存在,那Lambda類型就沒法作為Concept傳入了。

總結

  • 想用Lambda表達式的類型作為Concept,使用類型推導關鍵字decltype
  • Lambda的類型沒有default constructor、copy assignment operator.
  • 寫C++庫的時候,如果用到模板和Concept技術,要考慮添加Concept對象做參數的類型的構造函數從而才能不限制Lambda表達式類型作為Concept傳入。

畢竟,C++語言設計的原則是盡量不限制C++語言的用戶的編程方式。

以上所述是小編給大家介紹的C++ 中使用lambda代替 unique_ptr 的Deleter的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩黄色高清视频| 午夜精品在线视频| 亚洲精品国产免费| 91精品久久久久久久久久另类| 久久中国妇女中文字幕| 国产精品91免费在线| 色综合男人天堂| 亚洲欧美日韩国产精品| 成人欧美一区二区三区黑人孕妇| 亚洲娇小xxxx欧美娇小| 日韩性xxxx爱| 午夜精品三级视频福利| 国产v综合v亚洲欧美久久| 色噜噜狠狠狠综合曰曰曰| 国产香蕉一区二区三区在线视频| 欧美日本高清一区| 欧美成人免费小视频| 欧美日韩国产成人在线| 久久久久久久影院| 亚洲国内高清视频| 久久99精品视频一区97| 色爱av美腿丝袜综合粉嫩av| 成人免费在线网址| 欧美在线亚洲在线| 国语自产精品视频在线看一大j8| 久热精品视频在线观看一区| 一个人看的www欧美| 欧美精品一区二区三区国产精品| 欧美日韩999| 亚洲成成品网站| 国产欧美日韩最新| 国产不卡视频在线| 92版电视剧仙鹤神针在线观看| 久久久之久亚州精品露出| 亚洲国产私拍精品国模在线观看| 亚洲va欧美va在线观看| 亚洲欧美日韩另类| 欧美精品电影在线| 国产综合在线观看视频| 亚洲天堂av女优| 色狠狠av一区二区三区香蕉蜜桃| 欧美裸体xxxx| 日韩免费在线看| 97视频在线观看免费高清完整版在线观看| 久久久精品2019中文字幕神马| 成人在线精品视频| 成人网址在线观看| 亚洲成人在线视频播放| 国产综合在线视频| 欧美精品在线视频观看| 日韩免费电影在线观看| 欧美激情喷水视频| 狠狠色狠狠色综合日日五| 欧美亚洲在线观看| 国产精品视频久久久久| 51精品国产黑色丝袜高跟鞋| 国产精国产精品| 亚洲欧美激情精品一区二区| 欧美国产日韩免费| 精品久久久999| 国产精品精品视频一区二区三区| 精品久久中文字幕| 色婷婷综合成人| 国产精品视频精品视频| 欧美日韩亚洲精品一区二区三区| 中文字幕国产精品| 亚洲欧美日本伦理| 国产日产亚洲精品| 韩国精品久久久999| 日韩在线观看精品| 欧美性xxxxxxx| 国产精品久久久久9999| 国产精品久久久久久av下载红粉| 97视频免费在线观看| 精品magnet| 久久成人这里只有精品| 26uuu久久噜噜噜噜| 欧美在线视频网站| 欧美福利视频网站| 一区二区三区四区在线观看视频| 国产一级揄自揄精品视频| 亚洲综合中文字幕在线观看| 中文字幕免费国产精品| 91在线免费观看网站| 亚洲国产精品久久久久秋霞不卡| 视频在线观看一区二区| 精品爽片免费看久久| 欧美美女操人视频| 国产精品第一页在线| 91夜夜揉人人捏人人添红杏| 欧美精品情趣视频| 日韩av在线网站| 久久99亚洲精品| 在线看片第一页欧美| 亚洲精品久久久久久久久久久| 国产伦精品一区二区三区精品视频| 亚洲天堂成人在线视频| 亚洲男人的天堂网站| 欧美日韩国产一区二区| 国产精品电影在线观看| 日韩免费在线播放| 伊人久久男人天堂| 日韩av成人在线| 伊人成人开心激情综合网| 欧美视频在线观看免费网址| 久久久成人精品| 大荫蒂欧美视频另类xxxx| 91网站免费观看| 午夜免费久久久久| 日本精品中文字幕| 日韩精品视频中文在线观看| 亚洲成人精品在线| 久久久噜噜噜久噜久久| 精品亚洲国产成av人片传媒| 国产精品久久电影观看| 欧美日韩国产一区二区三区| 精品国产一区二区三区久久| 久久久精品电影| 91在线色戒在线| 日韩av在线免费观看一区| 久久久精品国产网站| 中文字幕9999| 欧美激情一区二区三区久久久| 日本精品一区二区三区在线| 欧美日韩国产在线| 久久久国产一区二区| 亚洲区一区二区| 欧美第一黄色网| 日韩久久午夜影院| 欧美成人精品激情在线观看| 亚洲天堂免费在线| 98精品国产自产在线观看| 性欧美长视频免费观看不卡| 日韩av在线影院| 98精品国产高清在线xxxx天堂| 亚洲天堂av图片| 国产成人精品视频在线观看| 日韩av免费一区| 一本一本久久a久久精品牛牛影视| 国产精品自产拍在线观看中文| 久久91精品国产| 亚洲精品美女在线观看| 在线国产精品视频| 国产欧美亚洲视频| 亚洲三级 欧美三级| 亚洲欧美成人网| 成人免费在线视频网站| 欧美日韩一二三四五区| 精品视频在线播放| 精品国产一区二区三区四区在线观看| 日韩成人在线播放| 国产精品成人免费电影| 国产亚洲日本欧美韩国| 最近的2019中文字幕免费一页| 欧美激情视频网站| 在线色欧美三级视频| 日韩av网址在线| 亚洲男人的天堂在线播放| 国产精品一区二区三区毛片淫片| 日本一欧美一欧美一亚洲视频| 亚洲第一页在线| 中文欧美在线视频| 欧美高清性猛交| 亚洲一区二区黄|