Re: [問題] C++11 語法問題
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
03/14 21:38, 1F
→
03/14 21:39, , 2F
03/14 21:39, 2F
→
03/14 21:54, , 3F
03/14 21:54, 3F
推
03/14 21:56, , 4F
03/14 21:56, 4F
→
03/14 21:57, , 5F
03/14 21:57, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
1
5
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章