为什么我用std :: bind()得到'本地临时'的返回地址?

时间:2013-11-21 12:24:06

标签: c++ visual-studio-2010 c++11 stl

我正在尝试使用标准代码(Josuttis)将树的键绑定到函数, 但Visual Studio 2010警告(并在运行时崩溃):

... / functional(447):警告C4172:返回本地临时的地址

代码是:

void print(int x) { ... }

using namespace std;

map<int, float>  m;
for_each(m.begin(), m.end(), 
         bind( print,
               bind( &map<int,float>::value_type::first, placeholders::_1) ) );

这段代码好像在其他编译器中工作正常。

在Windows的Windows实现中是否有任何隐藏导致此错误的内容?

1 个答案:

答案 0 :(得分:0)

而不是:

&map<int,float>::value_type::first

使用:

&m::value_type::first

尽管它不应该有所作为,这样你就不会使用本地临时。