clamp: C++ lambda preprocessor
http://blogs.wankuma.com/episteme/archive/2006/02/25/21526.aspx
↑これもスゴいがboost(http://www.boost/org/)はさらにキョーレツ。
#include <iostream>
#include <algorithm>
#include <boost/lambda/lambda.hpp>
int main() {
using namespace boost::lambda;
int iarray[] = { 1, 2, 3, 4, 5 };
int sum = 0;
std::for_each( iarray, iarray + 5, sum += _1 );
std::cout << sum << std::endl;
}
そのまんまコンパイル/実行できます。
まさにtemplateのマジックです。