c – 了解std :: function和std :: bind
我正在玩std :: function和std :: bind,我注意到一些不直观的东西,我想更好地了解它.
例如: void fun() { } void hun(std::string) { } int main() { function<void(int)> g = &fun; //This fails as it should in my understanding. function<void(int)> f = std::bind(fun); //This works for reasons unknown to me function<void(int,std::string)> h = std::bind(hun); //this doesn't work return 0; } 如何绑定函数< void(int)>到一个void()函数. 解决方法
如果不使用参数占位符(_1,_2,…),则传递给从std :: bind返回的函数对象的任何参数都将被丢弃.附:
std::function<void(int)> f = std::bind(fun,std::placeholders::_1); 我按预期得到一个(长而丑)的错误. 对于对Standardese感兴趣的人: §20.8.9.1.2[func.bind.bind] template<class F,class... BoundArgs> *unspecified* bind(F&& f,BoundArgs&&... bound_args);
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |