库计划C ++ 0x?

时间:2009-08-03 16:32:07

标签: c++ qt boost c++11

最近我对VC2010中对lambdas的支持感到非常兴奋。我正在慢慢开始把握这个功能在将C ++转化为更好的东西方面的​​全部潜力。

但后来我意识到这种潜力很大程度上取决于日常图书馆如增强和QT对lambdas的主流支持。
有没有人知道是否有计划使用C ++ 0x的新功能扩展这些库?

lambdas实际上取代了对boost :: lambda的需求以及与之交互的boost中的所有内容。 QT可以在所有容器中添加对lambda的支持,甚至可以作为定义SLOT的替代方法

5 个答案:

答案 0 :(得分:6)

Lambdas已经非常适合现有的库 - 函数接受模板参数给出的类型的函数对象的任何地方。

这是关于他们的一件好事 - 他们是一个语言特征的典型例子,它以一种漂亮的语法编纂现有的做法。

显然,boost lambda库变得多余,但这意味着它不需要添加任何新功能。

答案 1 :(得分:4)

我没有看到lambda的使用取决于库的支持。 Lambdas消除了创建许多类的需要,只是为了包装不同的小算法,并与其他语言/库特征巧妙地结合在一起(std::function浮现在脑海中)。无论您以前在哪里传递函数对象或函数指针,都可以使用lambdas。

因此,他们主要为使用现有代码和库添加了另一种选择。我可以看到库以更好地支持lambda的唯一方法是使用更多功能风格的方法。

答案 2 :(得分:3)

有可能这样的库会等到相关C ++ 0x功能的正确编译器支持,并且在主流编译器支持它之前不会费心。不要屏住呼吸。

答案 3 :(得分:1)

这不是真的,你不能用C ++ 0x lambda替换boost :: lambda。由于某些原因,请参阅here(关于boost bind,但我认为其中大部分都会转移)

此外,@ daniel this可能会帮助您开始使用lambda函数/ boost bind作为插槽。它让我的生活变得异常轻松。

另外,@ litb来自我的消息来源,lambdas不会被改变(argh)

答案 4 :(得分:0)

大多数库使用标准函数指针进行回调。 C ++ 0x lambdas可以用作函数指针,因此大多数库都不需要修改。其他库使用模板,因此可以使用任何可调用对象(例如std::foreach不需要修改)。

我能想到的唯一其他C ++ 0x功能库可能会改为使用强类型enums。此外,库可能会开始使用extern模板来减少编译时间。