编译器(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