这是我的代码:
void funct(carl& c){
std::cout<<"test"<<std::endl;
}
int main(int argc, char** argv) {
carl c;
auto f = std::bind(funct,&c);
std::packaged_task<void()> task1( f ); // error
//std::packaged_task<void()> task1( std::bind(funct,carl()) ); this one worked though
return 0;
}
我正在尝试绑定一个函数并使用carl c
作为参数(&amp; to reference)。不知怎的,当我尝试complile时,我得到功能错误。 (为了测试,卡尔只是一个空洞的课程。)
[error] no type named 'type' in class std::result_of...
但是,如果生病必须使用carl()
,但我想使用现有的carl
实例
答案 0 :(得分:1)
那是因为你的函数需要引用一个对象,并且你正在传递一个指针。正确的绑定方式是
auto f = std::bind(funct,std::ref(c));
更新:实际上,更正确的方法是
{{1}}