C++ 为什么我会得到一个';当地临时'的返回地址;std::bind()警告?
我试图使用一段标准代码(Josuttis)将树的键绑定到函数, 但是VisualStudio2010警告(当我运行它时会崩溃): …/功能(447):警告C4172:返回本地临时用户的地址 代码是:C++ 为什么我会得到一个';当地临时'的返回地址;std::bind()警告?,c++,visual-studio-2010,c++11,stl,C++,Visual Studio 2010,C++11,Stl,我试图使用一段标准代码(Josuttis)将树的键绑定到函数, 但是VisualStudio2010警告(当我运行它时会崩溃): …/功能(447):警告C4172:返回本地临时用户的地址 代码是: void print(int x) { ... } using namespace std; map<int, float> m; for_each(m.begin(), m.end(), bind( print, bind( &a
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) ) );
void打印(int x){…}
使用名称空间std;
地图m;
对于每个(m.开始(),m.结束(),
装订,
绑定(&map::value_type::first,占位符::_1));
这段代码似乎可以在其他编译器中正常工作
bind的windows实现中是否隐藏了导致此错误的内容?而不是:
&map<int,float>::value_type::first
虽然这不会有什么不同,但这样你就不用使用本地临时工了。这会有什么不同?您正在尝试形成指向成员的指针。不,这是一个编译器错误:
错误C2510:'m':'的左边必须是类/结构/联合
lambda可能更容易:[](映射::值类型对){print(pair.first);}
vs2012说错误C2780:'enable_if::value,std:'u Bind>::type std::Bind(_Rx(u thiscall Farg0:*const)(_V0_t、_V1_t、_V2_t、_V3_t、_V4_t)易失性常数、_Vx0_t&、_Vx1_t&、_Vx2_t&、_Vx3_t&、_Vx4_t&)“:需要6个参数-提供2个。您还使用了哪些其他编译器?@doctorlove我使用了vs2010。那么,vs2012有什么问题吗?这段代码应该编译得很好!@GrimFandango,我很困惑。如果我发现这一点,我会在调用bind时报告。第一个参数应该是函数指针。在第二次调用bind时,您没有传递functi在指针上。(我完全不知道你在传递什么!)
&m::value_type::first