繁体   English   中英

boost :: bind()是通过引用还是按值复制参数?

[英]Does boost::bind() copy parameters by reference or by value?

为什么valgrind的DRD工具抱怨“线程加载冲突...大小为4”:关于这样的代码:

void SomeFunction(const int& value)
{
    boost::bind(..., value); /* <-- complaines on this line
                                with last backtrace function "new(int)" */
}

boost :: bind()是否按引用或值存储值?

按价值。 1

但你可以通过ref复制它:

void SomeFunction(const int& value)
{
    boost::bind(..., boost::ref(value)); 
    boost::bind(..., boost::cref(value)); // by const ref
}

1 http://www.boost.org/doc/libs/1_46_1/libs/bind/bind.html#Purpose

i的值的副本存储在函数对象中。 boost :: ref和boost :: cref可用于使函数对象存储对象的引用,而不是副本:int i = 5;

bind(f,ref(i),_ 1);

bind(f,cref(42),_ 1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM