c++ - 为什么使用 std::bind() 时会收到 'returning address of local temporary' 警告?

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

我正在尝试使用一段标准代码 (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/

相关文章:

c++ - PCL 库基本项目返回 abort 已被调用

C++ lambda 捕获约束

c++ - 创建对象的拷贝

c++ - 生成项目文档

php - Facebook HipHop (PHP to C++) 能否在Windows上编译运行

c++ 编译错误 "redefinition of",需要帮助才能找到它

c++ - 获取/释放语义重新排序

c++ - 使用类的 const 成员使用 std::deque::erase 编译错误

c# - 获取 XML 文件并将其转换为用于 C# 编码的长字符串

c++ - Visual C++ 运行时 malloc/free 会将内存返回给操作系统吗?