小编Ric*_*ard的帖子

将C++ 0x lambda函数存储在std :: map/vector中,以便稍后在Visual Studio中使用

我正在研究一个小型图形引擎项目,我希望它能够跨越平台(有一天).我一直在使用最新版本的MinGW和C++ 0x进行开发.对于事件监听器,我使用存储在std :: map中的lambda函数,这些函数将在某个事件发生时被调用.它与MinGW一起工作非常流畅,但有一天,当我在Visual Studio(最新版本)中尝试它时,它失败了.

我检查了lambda的类型,即使我将两个lambdas定义为相同,它们也会得到不同的类型(annonymous namespace :: and annonymous namespace::)).

例如,我有这个std :: map来存储滚动侦听器

std::map<int,void (*)(int p)> scrollListenerFunctions;
Run Code Online (Sandbox Code Playgroud)

然后我可以通过以下方式添加一个监听器:

addScrollListener([](int p){/* Do something here */});
Run Code Online (Sandbox Code Playgroud)

正如我所说,这在MinGW中工作正常,但在Visual Studio中失败,有没有办法做到这一点所以它可以在两者中工作,甚至可以将lambdas存储在VS atm中?

如果您需要查看更多代码,可以在http://code.google.com/p/aotk/source/browse/找到它们.lambda映射位于window.h/window.cpp中

lambda c++11

5
推荐指数
2
解决办法
2530
查看次数

标签 统计

c++11 ×1

lambda ×1