相关疑难解决方法(0)

decltype中的C++ 11 lambda

对于以下代码:

auto F(int count) -> decltype([](int m) { return 0; }) 
{                                                               
    return [](int m) { return 0; };                                  
}
Run Code Online (Sandbox Code Playgroud)

g ++ 4.5给出错误:

test1.cpp:1:32: error: expected primary-expression before 'int'
test1.cpp:1:32: error: expected ')' before 'int'
Run Code Online (Sandbox Code Playgroud)

问题是什么?从函数返回lambda的正确方法是什么?

c++ lambda decltype c++11

31
推荐指数
3
解决办法
1万
查看次数

在C++中进行延迟转换

我有以下Python代码片段,我想用C++重现:

from itertools import count, imap

source = count(1)
pipe1 = imap(lambda x: 2 * x, source)
pipe2 = imap(lambda x: x + 1, pipe1)
sink = imap(lambda x: 3 * x, pipe2)
for i in sink:
    print i
Run Code Online (Sandbox Code Playgroud)

我听说过Boost Phoenix,但我找不到transform像Python那样懒惰行为的例子imap.

编辑:为了澄清我的问题,我们的想法不仅仅是使用a来按顺序应用函数for,而是能够使用像std::transform无限生成器这样的算法.函数的组合方式(使用方言等功能更强的语言)也很重要,下一步是函数组合.

更新:感谢bradgonesurfing,David Brown和Xeo的惊人答案!我之所以选择Xeo是因为它是最简洁的,它让我在我想要的地方得到了正确的结果,但是David对于理解这些概念非常重要.此外,bradgonesurfing的倾斜Boost :: Range :).

c++ python functional-programming lazy-evaluation

10
推荐指数
2
解决办法
1565
查看次数