元程序c ++代码

cou*_*ech 6 c++ functional-programming metaprogramming

在我的大学新学期开始,我再一次"被迫"退出抽象,并探索低水平编程的深水c++.我的思绪已经部分地受到折叠,高阶函数等的影响,我在写作中没有找到任何乐趣,例如:

bool allEven = true;
for(int i = 0; i < arr.length; i++){
   if (arr[i] % 2 != 0){
      allEven = false; 
      break;
   }
}
Run Code Online (Sandbox Code Playgroud) 当我知道我可以写val allEven = arr forall (_ % 2 == 0).
我的问题是:有没有任何工具|技术|语言构造|元编程的东西,可以带来一些c ++代码而不用实际编写它?我需要整个源代码,但它最终可能会被混淆,只有机器才能处理它.
请不要指责我懒惰,我认为这是我最好的美德之一.:-)
编辑这不是完全清楚你有什么要求......在最好的,我想用类似的东西GWT,而是编译JavaJavaScript来源它将编译ScalaHaskellF#C++来源,但因为我不相信像这存在,我想有一些东西......乐于助人.例如,我很欣赏建议的anon函数.

Jer*_*fin 3

目前尚不完全清楚您真正要求的是什么,但如果您尝试编写更像其他代码的 C++,您可以这样做:

bool allEven = 
    std::accumulate(arr.begin(), arr.end(), [](bool a, int i) {return a && i & 1==0; }, 1);
Run Code Online (Sandbox Code Playgroud)

这确实使用了 lambda,这是 C++0x 中的新功能。如果您使用的是不支持 lambda 的旧编译器,您可以考虑使用 Boost Lambda(在这种情况下,您的代码将更接近您给出的示例)。