【发布时间】:2012-06-20 17:16:31
【问题描述】:
我已经用 VS、g++ 和 Clang 尝试了以下操作,但无法确定任何喷出的错误的韵律或原因。
void foo() {}
auto f = bind(async, foo);
我怀疑错误可能源于混淆 async() 绑定到哪个,一个采用启动策略与一个不采用启动策略...或者我必须明确地为 async() 提供其模板类型(例如异步<...>)?无论哪种方式,写上面的语句的正确方法是什么?
编辑:
感谢您的建议,但以下都不起作用(使用任何编译器):
bind(async<decltype(foo)>, foo);
bind(async<void (*)()>, foo);
bind(async<function<void ()> >, foo);
【问题讨论】:
-
是的,您需要传递模板参数。我只会使用 lambda 并忘记绑定。
-
也许可以试试
async<decltype(foo)>。