我正在尝试使用一段标准代码 (Josuttis) 将树的键绑定(bind)到一个函数, 但 Visual Studio 2010 警告(并在我运行时崩溃):
.../functional(447): warning 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) ) );
此代码似乎在其他编译器中运行良好。
是否有任何隐藏在导致此错误的绑定(bind)的 windows 实现中?
最佳答案
代替:
&map<int,float>::value_type::first
使用:
&m::value_type::first
尽管这应该没什么区别,但那样您就不会使用本地临时文件。
关于c++ - 为什么使用 std::bind() 时会收到 'returning address of local temporary' 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120943/