我现在应该使用C++ 11 lambdas吗?

Any*_*orn 7 c++ lambda c++11

这是我的困境:我真的很喜欢lambda,并且一直在使用Boost.Fusion和Phoenix.它们非常成熟,可以很好地兼顾许多编译器.

C++ 11 lambdas怎么样?它们非常好用,然后更容易使用,然后提升替代品(没有更多的仿函数!).最近的ICC和GCC编译器支持它们.但是仍然有很多ICC 9.x和GCC 4.1及以下系统,更不用说XL和Sun编译器了.这些编译器是否提供lambda支持?

我倾向于认为也许我应该等待使用C++ 11功能,以免旧系统拒绝代码.你怎么看?等到较旧的编译器逐渐消失或者只是这样做?

Jam*_*lis 13

您是否需要能够使用不支持C++ 11 lambdas的编译器编译代码?

如果是这样,那么你就不能使用它们(显然).否则,没有太多理由不使用它们.

在C++ 11中对lambda表达式的规范几乎没有变化,因此现在使用它们几乎没有风险.当然会偶尔出现编译器错误,但大多数情况下这些错误很少.

我所知道的唯一与lambda相关的主要特性是支持lambda表达式的多个编译器的最新版本不支持,这是去年三月添加的一个,它允许无捕获的lambda被隐式转换为函数指针.Visual C++ 2010和Intel C++ 11.1不支持(我没有更高版本的英特尔C++用于测试,对不起).但是,Visual C++ 11确实支持隐式转换.

  • @aaa:那么你需要平衡你将要使用端口代码来处理旧编译器的风险,以及今天在代码中使用lambda表达式的回报.我不了解你的情况,知道这将如何解决.最后,只有你能做出决定. (2认同)

Joh*_*her 5

你的目标是多个编译器吗?那就不要.如果您确切地知道您正在瞄准哪些编译器,并且他们以相同的方式处理语法,那么继续使用新功能!