这是std::bind
的模板头:
template< class R, class F, class... Args >
bind( F&& f, Args&&... args );
我们可以根据我们想要实现的目标来绑定(bind)特定的函数,比如成员函数
或者普通函数。
虽然我担心的是:如果我们做类似的事情:
auto p = std::bind(&miguel::changex,&m,1); //miguel is a class and changex is the function
我们通过引用绑定(bind)它,因此任何更改肯定会影响原始内容。
如果我们这样做:
auto p = std::bind(&miguel::changex,m,1); //miguel is a class and changex is the function
这将是一个拷贝,所做的任何更改都不会反射(reflect)到原始文件中。
我的问题:
bind( F&& f, Args&&... args );
当它们都采用 universal reference
时如何评估拷贝?
最佳答案
auto p = std::bind(&miguel::changex,&m,1);
这里的&m是传递一个指向m绑定(bind)的指针,而不是引用,所以任何改变肯定会影响到原来的。
关于c++ - std::bind 涉及到临时类拷贝时的模板推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443760/