編譯器(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