[問題] std::bind傳入引數 (已解決)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++
問題(Question):
最近在看Effective Modern C++中文版
條款34寫到盡量用lambda取代bind
作者舉了一個例子我截取片段如下
https://codepaste.net/17veuz
1-8行是function的宣告
15行的setSoundL是使用lambda
29行是使用bind會得到的錯誤範例
錯誤原因是now()+1h會在bind時就當作引數傳入
而不是呼叫bind時才計算
39行是作者修改過的範例
將now()+1h再用bind包裝一次
我的疑問是為何這樣不會在bind的時候就把now傳進去?
試著寫一個簡單的code來重現
http://ideone.com/tSyvtn
原本會預計test2在經過23行就能得到5576
但test2輸出結果還是一樣為10
表示test2在bind的時候就已經把值傳入了
並沒有達到書上講的效果
所以想問問看怎樣可以讓23行的set發生作用?
使得25行的test2()得到5576
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.212.217
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480041214.A.96B.html
→
11/25 18:25, , 1F
11/25 18:25, 1F
→
11/25 18:59, , 2F
11/25 18:59, 2F
→
11/25 18:59, , 3F
11/25 18:59, 3F
→
11/26 02:00, , 4F
11/26 02:00, 4F
→
11/26 07:59, , 5F
11/26 07:59, 5F
→
11/26 12:08, , 6F
11/26 12:08, 6F
→
11/26 12:09, , 7F
11/26 12:09, 7F
→
11/26 12:09, , 8F
11/26 12:09, 8F
→
11/26 13:40, , 9F
11/26 13:40, 9F
※ 編輯: ilikekotomi (36.231.116.19), 11/26/2016 13:41:06