c++ - std::bind 涉及到临时类拷贝时的模板推导

标签 c++ c++11

这是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/

相关文章:

c++ - 静态 constexpr 类成员何时需要类外定义?

c++ - 如何将指针作为另一个方法参数传递给方法

c++ - 如何从 ctime 巧妙地初始化 struct tm

c++ - type_traits 中是否有类似 std::remove_const_reference 的东西

C++正则表达式错误

c++ - 函数定义为限定 id

c++ - 如何在成员初始值设定项列表之外初始化类成员

C++ Http 请求 SSL 错误

c++ - GCC 4.9.1 在 RHEL 6.0 上编译失败,编译错误在 "libsanitizer"

c++ - 为什么 double 类型返回 Infinity?