Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我会得到一个';当地临时'的返回地址;std::bind()警告?_C++_Visual Studio 2010_C++11_Stl - Fatal编程技术网

C++ 为什么我会得到一个';当地临时'的返回地址;std::bind()警告?

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

我试图使用一段标准代码(Josuttis)将树的键绑定到函数, 但是VisualStudio2010警告(当我运行它时会崩溃):

…/功能(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) ) );
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