C++0x - ラムダ式(N2413)

以前に比べていくらか読みやすくなっていますね

N2413 - Lambda Expressions and Closures: Wording for Monomorphic Lambdas

double min_salary = ...

double u_limit = 1.1 * min_salary;

std::find_if(employees.begin(), employees.end(),
                <&>(const employee& e) (e.salary() >= min_sarary && e.salary() < e_limit));

これは

<&>(const employee& e) (e.salary() >= min_sarary && e.salary() < e_limit)

こう書いてもいい、と

<&>(e) (e.salary() >= min_sarary && e.salary() < e_limit)
int ar     = { 3, 1, 4 };
int sum    = 0;
int factor = 2;

std::for_each(ar, ar + 3, <>(int value; &sum, factor) (sum += factor * value));

けっこう読みやすい


そして、<>になってる部分を<&>にすればこう書ける、と

std::for_each(ar, ar + 3, <&>(int value) (sum += factor * value));

個人的には好きです。<>()->(...)
よりはだいぶマシ



よし!しばらくはC++0xネタでいこう



C++0x言語拡張まとめ