Re: [問題] C++11 語法問題

看板C_and_CPP (C/C++)作者 ( )時間14年前 (2012/03/14 14:38), 編輯推噓2(203)
留言5則, 1人參與, 最新討論串2/2 (看更多)
std::function的template原理請洽Modern C++ Design Ch.5,有精美的討論 class foo{ public: void operator()(int value); } void callback(int arg, std::function<void(int)> func){ func(arg); } foo obj; callback(1, obj); 會有std::function move ctor出現是因為 callback(1, obj); compiler會隱式轉換成 callback(1, std::function<void(int)>(obj)); 而callback的第二個參數是pass by value,所以實際在callback內部的func的建構是 std::function<void(int)> func( std::function<void(int)>(obj) ); 另外std::function有定義move ctor,所以func是用move ctor建構的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.92.133

03/14 21:38, , 1F
嗯我有猜到會隱換,但奇怪的是我f11就直接跑到move cstr
03/14 21:38, 1F

03/14 21:39, , 2F
沒看到他跑copy cstr很不解
03/14 21:39, 2F

03/14 21:54, , 3F
我傳一般function pointer他直接跑copy cstr,不懂他怎會走不
03/14 21:54, 3F

03/14 21:56, , 4F
同建構方式,f12進去stl直接看是不是不可讀啊…很複雜
03/14 21:56, 4F

03/14 21:57, , 5F
還是都該買解析的書才好懂…很挫折
03/14 21:57, 5F
文章代碼(AID): #1FO3pwE9 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FO3pwE9 (C_and_CPP)