C++11 我能在C++中创建一个新的语法吗?

C++11 我能在C++中创建一个新的语法吗?,c++11,macros,iterator,generator,C++11,Macros,Iterator,Generator,我非常喜欢Python生成器表达式,并且在Python中经常滥用它。现在我没有能力在C++ 11上实现生成器表达式,使用宏中嵌入的宏、lambdas和更模糊的东西。我的目标是尽可能地复制操作员的所有能力。已经有一些实现,但它们缺乏多变量支持。 Python最复杂的语法如下所示 generator = i*j for i,j in zip(arr1,arr2) if i>0 and j>0 # Python 此行生成一个函子,在每次成功调用时返回两个数组中重复值的乘法。在我的实现中,

我非常喜欢Python生成器表达式,并且在Python中经常滥用它。现在我没有能力在C++ 11上实现生成器表达式,使用宏中嵌入的宏、lambdas和更模糊的东西。我的目标是尽可能地复制操作员的所有能力。已经有一些实现,但它们缺乏多变量支持。 Python最复杂的语法如下所示

generator = i*j for i,j in zip(arr1,arr2) if i>0 and j>0 # Python
此行生成一个函子,在每次成功调用时返回两个数组中重复值的乘法。在我的实现中,语法现在看起来像

auto generator = brf_genexpr(i*j,(i,j),zip(arr1, arr2),i>0 && j>0); //C++11
我的问题是:你知道有什么方法,不管多么奇特,可以去掉那些逗号,让我写东西吗

auto generator = brf_genexpr(i*j for i,j in zip(arr1,arr2) if (i>0 && j>0));
我知道我可以编写一个预处理器脚本来更改语法,但我喜欢代码内解决方案。 更新:

我的问题只是关于调用语法,我的实现已经开始工作了。
不,如果以新的方式,完全不可能使用语言关键字


如果你愿意使用不同的标记,如“genfor,genif”,那么事情就有可能发生。

简单的答案是否定的。你可以通过状态函子(即重载运算符并跟踪其状态的类)以某种方式获得类似的结果。我就是这样做的。我使用宏来最小化语法,lambdas用于过滤和组合表达式,functor和迭代器作为结果值。如果没有C++11,我甚至不会去想它。@Barafulbino这里有个家伙,他离开去寻求在C中实现lambdas。不知道他现在在哪里。